大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你理解错误了,输入结果是由alert进行的一个全局变量的输出,也就是说alert(msg)中的msg变远是全局变量.
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站制作、成都网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的武鸣网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
而在第一个例子中,由于show是引用了全局变量,并将全局变量的值更改为"局部变量",也就是说show函数在执行时并没有开辟新的变量,而是将全局变量的值更改了,所以显示的是"局部变量",但msg却不是一个局部变量,不能做为局部变量去理解的.
在第二个例子中,由于使用了var msg,在JS或是C中都是这样的处理的,而不是不同于C,var 表示开辟新的内存空间,这里会出现两个msg变量,但是你别忘记了,show函数内部的msg当show函数执行完毕返回到主程序中时,这个局部变量已经不存在了.而alert(msg)显示的仍然是主程序中的变量,当然,show函数的变量不会了生任何的覆盖的.所以会显示出”全局变量”.
也就是说,两次显示的都是全局变量的值,虽然值有改变的.所以我想你可能将第一个变量想成了局部变量的,所以你错了!
但是二楼,JS与C同属于EMCA-262语言核心,在这一点上有什么区别?
我给楼主一个例子,楼主可以看一下:
script
var msg ="全局变量";//开辟全局变量
function show(){
var msg="局部变量";
alert(msg);//此处输出的是局部变量,因为这些函数体内如果有同名的全局变量昌被屏掉了.
}
/script
也就是说只有在我的这种情况是输出的局部变量,而在你的两个例子中由于alert()名是在主程序中,所以输出都是全局变量的!只不过是全局变量与局部变量的值有没有被覆盖而已.当你看到它输入出的值是”局部变量”时,并不表示他是局部变量.变量的作用域与变量的值完全是两码事,不可混为一谈!
我的例子与第二个例子做一下比较,你的理解会更深刻的.这种情况,如果输入的是”全局变量”时才是全局变量,输出的是”局部变量”时才是局部变量!想一想为什么吧!
ECMAScript、DOM、BOM
JavaScript的三大组成部分是:
1、ECMAScript:JavaScript的核心,描述了语言的基本语法(var、for、if、array等)和数据类型(数字、字符串、布尔、函数、对象(obj、[]、{}、null)、未定义),ECMAScript是一套标准,定义了一种语言(比如JS)是什么样子。
2、文档对象模型(DOM):DOM(文档对象模型)是 HTML 和 XML 的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档。HTML 或 XML 页面的每个部分都是一个节点的衍生物。请考虑下面的 HTML 页面:
html
head
titleSample Page/title
/head
body
phello world!/p
/body
/html
这段代码可以用 DOM 绘制成一个节点层次图:DOM 通过创建树来表示文档,从而使开发者对文档的内容和结构具有空前的控制力。用 DOM API 可以轻松地删除、添加和替换节点(getElementById、childNodes、appendChild、 innerHTML)。
3、浏览器对象模型(BOM)对浏览器窗口进行访问和操作。例如弹出新的浏览器窗口,移动、改变和关闭浏览器窗口,提供详细的网络浏览器信息(navigator object),详细的页面信息(location object),详细的用户屏幕分辨率的信息(screen object),对cookies的支持等等。
o 是 对象 对象用法跟 数组差不多
比如 var o = {'a':10 , 'b': 20};
可以 alert( o['a'] ); //10
比如
var o = {'a':10 , 'b': 20}; //这个就是 对象定义 {属性:值 , 属性:值 , 属性:值}
var a = ['a', 'b', 'c']; //这个是 数组
var i = 1;
这个时候 a[i] 是 字符 b
那么 o[a[i]] 就等于 o['b'] 也就是 20了
-----
比如
var o = {'a':10, 'b': 20, ‘c’:[3,6,9] }; // o是对象 有 3个属性 第3个属性c 本身又是 数组
var a = ['a', 'b', 'c'];
var i = 2;
var j = 1 ;
那么 o[a[i]] 等于 o[a[2]] 等于 o['c'] 就是 那个 [3,6,9]数组了
那么 o[a[i]][j] 就 等于 o['c'][j] 等于 o['c'][1] 等于 6