- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JavaScript 变量、作用域及内存详解
基本类型值有:undefined,NUll,Boolean,Number和String,这些类型分别在内存中占有固定的大小空间,他们的值保存在栈空间,我们通过按值来访问的。(1)值类型:数值、布尔值、null、undefined。(2)引用类型:对象、数组、函数。如果赋值的是引用类型的值,则必须在堆内存中为这个值分配空间。由于这种值的大小不固定(对象有很多属性和方法),因此不能把他们保存到栈内存中。但内存地址大小是固定的,因此可以将内存地址保存在栈内存中。script type=text/javascript”var box = new Object(); //创建一个引用类型var box = trigkit4; //基本类型值是字符串box.age = 21; //基本类型值添加属性很怪异,因为只有对象才可以添加属性。alert(box.age); //不是引用类型,无法输出;/script简而言之,堆内存存放引用值,栈内存存放固定类型值。“引用”是一个指向对象实际位置的指针。在这里需注意的是,引用指向的是具体的对象,而不是另一个引用。这里的对象可以是字符串对象,数字对象,数组对象等script type=text/javascriptvar man = newObject();//man指向了栈内存的空间地址 = Jack;var man2 = man;//man2获得了man的指向地址 alert();//两个都弹出Jack alert();/script复制变量值再看下面这个例子:script type=text/javascriptvar man = newObject();//man指向了栈内存的空间地址 = Jack;var man2 = man;//man2获得了man的指向地址 = ming;//因为他们都指向同一个object,同一个name,不管修改谁,大家都修改了 alert();//两个都弹出ming alert();/script由以上可以得出:在变量复制方面,基本类型和引用类型也有所不同,基本类型复制的是值本身,而引用类型复制的是地址。传递参数ECMAScript中,所有函数的参数都是按值传递的,script type=text/javascriptfunctionbox(num){ //按值传递 num+=10;return num; }var num = 10;var result = box(num); alert(result); //如果是按引用传递,那么函数里的num会成为类似全局变量,把外面的number替换掉 alert(num); //也就是说,最后应该输出20(这里输出10)/scriptjs没有按引用传递的,如果存在引用传递的话,那么函数内的变量将是全局变量,在外部也可以访问。但这明显是不可能的。执行环境及作用域执行环境是javascript中最为重要的概念之一,执行环境定义了变量或函数有权访问其他数据。全局执行环境是最外围的执行环境,在web浏览器中,全局执行环境是window对象,因此,所有的全局变量的函数都是作为window的属性和方法创建的。script type=text/javascriptvar name = Jack; //定义全局变量functionsetName(){returntrigkit4; } alert(); //全局变量,最外围,属于window属性 alert(window.setName()); //全局函数,最外围,属于window方法/script当执行环境内的代码执行完毕后,该环境被销毁,保存其中的变量和函数也随之销毁,如果是全局环境,需所有程序执行完毕或网页完毕后才会销毁。去掉var的局部变量script type=text/javascriptvar name = Jack;functionsetName(){ name = trigkit4; //去掉var变成了全局变量 } setName(); alert(name);//弹出trigkit4/script通过传参,也是局部变量script type=text/javascriptvar name = Jack;functionsetName(name){ //通过传参,也是局部变量 alert(name); } setName(?trigkit4);//弹出trigkit4 alert
您可能关注的文档
- HTML的设置与编写.ppt
- HG01 绪论.ppt
- I2SE1软件工程概论.ppt
- iamge test软件测试实例.doc
- IATF16949五大工具综合教材.pptx
- hua1.2孟德尔的豌豆杂交实验(二).ppt
- GIS讲解.ppt
- IATF16949标准培训教材--.ppt
- ICH_Q3a培训PPT.ppt
- I MindMapjia教程.doc
- 2024年学校党总支巡察整改专题民主生活会个人对照检查材料3.docx
- 2025年民主生活会个人对照检查发言材料(四个带头).docx
- 县委常委班子2025年专题生活会带头严守政治纪律和政治规矩,维护党的团结统一等“四个带头方面”对照检查材料四个带头:.docx
- 巡察整改专题民主生活会个人对照检查材料5.docx
- 2024年度围绕带头增强党性、严守纪律、砥砺作风方面等“四个方面”自我对照(问题、措施)7.docx
- 2025年度民主生活会领导班子对照检查材料(“四个带头”).docx
- 国企党委书记2025年度民主生活会个人对照检查材料(五个带头).docx
- 带头严守政治纪律和政治规矩,维护党的团结统一等(四个方面)存在的问题整改发言提纲.docx
- 党委书记党组书记2025年带头增强党性、严守纪律、砥砺作风方面等“四个带头”个人对照检查发言材料.docx
- 2025年巡视巡察专题民主生活会对照检查材料.docx
文档评论(0)