JS全局变量和局部变量最新解析


Posted in Javascript onJune 24, 2016

就是这种盲目无原理依据的研究测试弄晕了我, 有必要这么做吗? 其实理解了原理就没必要搞这么多一个一个的试, 然后得出规律, ECMAScript规则都已经定义好了.

var的规则是: 使用var声明变量就是内部变量, 否则就是先调用全局变量, 不管多少层函数.

this的规则是: method函数里的this永远指向自身, 普通函数的this永远指向DOMWindow.

// GodDamnTest1
function Foo() { 
var a = 123; // 局部变量, 所有子函数的全局变量
this.a = 456; // 对象属性
(function() { 
alert(a); // 123, 全局
alert(this.a); // undefined, 普通函数, this指向DOMWindow 
})(); 
} 
var f = new Foo(); 
// GodDamnTest2
function Foo() { 
var a = 123; 
this.a = 456; 
(function(a) { // 局部声明
alert(a); // 456, 被函数局部声明的a覆盖了全局 
})(this.a); 
} 
var f = new Foo(); 
// GodDamnTest3
function Foo() { 
var a = 123; 
this.a = 456; 
(function() { 
alert(a); // 123, 全局
alert(this.a); // undefined, DOMWindow 
this.b = 789; // window.b = 789
})(); 
(function() { 
alert(this.b); // 789, window.b
})(); 
} 
var f = new Foo(); 
(function() { 
alert(this.b); // 789, window.b
})(); 

// GodDamnTest4
function Foo() { 
(function() { 
this.b = 789; // window.b = 789
})(); 
(function() { 
alert(this.b); // 789, window.b
var b = 0; 
alert(b); // 0, 这样的测试也写出来了!
})(); 
} 
var f = new Foo(); 
(function() { 
alert(this.b); // 789, window.b
alert(b); // 789, window.b
})();

令人意外的是,最后一个 alert(b),结果仍然是 789。 // no damn surprise at all!

// GodDamnTest5
function Foo() { 
(function() { 
this.b = 789; // window.b = 789
})(); 
(function() { 
alert(this.b); // 789, window.b
alert(b); // undefined, 全局
var b = 0; 
alert(b); // 0, 还有这种测试!
})(); 
} 
var f = new Foo(); 
(function() { 
alert(this.b); // 789, window.b
alert(b); // 789, window.b
})();

PS:JS删除局部变量的方法

alert('value:'+str+'\ttype:'+typeof(str)) //声明变量前,引用
var str="dd";
alert('value:'+str+'\ttype:'+typeof(str)) //声明并赋值变量后,引用
str=undefined;




 //删除局部变量
alert('value:'+str+'\ttype:'+typeof(str)) //取消变量后,引用,和第一个相同

以上所述是小编给大家介绍的JS全局变量和局部变量最新解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript 鼠标滚轮事件
Apr 09 Javascript
event对象的方法 兼容多浏览器
Jun 27 Javascript
javascript利用控件对windows的操作实现原理与应用
Dec 23 Javascript
JQuery鼠标移到小图显示大图效果的方法
Jun 10 Javascript
javascript简单比较日期大小的方法
Jan 05 Javascript
微信小程序 chooseImage选择图片或者拍照
Apr 07 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
Aug 15 Javascript
Vue 滚动行为的具体使用方法
Sep 13 Javascript
JS实现判断图片是否加载完成的方法分析
Jul 31 Javascript
Vue基本使用之对象提供的属性功能
Apr 30 Javascript
Vue.extend 编程式插入组件的实现
Nov 18 Javascript
javascript实现扫雷简易版
Aug 18 Javascript
jQuery插件passwordStrength密码强度指标详解
Jun 24 #Javascript
jquery选择器中的空格与大于号>、加号+与波浪号~的区别介绍
Jun 24 #Javascript
jquery表单插件Autotab使用方法详解
Jun 24 #Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
Jun 24 #Javascript
jQuery下拉框的简单应用
Jun 24 #Javascript
浅谈json取值(对象和数组)
Jun 24 #Javascript
json对象与数组以及转换成js对象的简单实现方法
Jun 24 #Javascript
You might like
php笔记之:文章中图片处理的使用
2013/04/26 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
2017/04/26 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
php使用yield对性能提升的测试实例分析
2019/09/19 PHP
JavaScript入门教程(7) History历史对象
2009/01/31 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
JSON取值前判断
2014/12/23 Javascript
JS获取iframe中longdesc属性的方法
2015/04/01 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
jQuery对象与DOM对象转换方法详解
2016/05/10 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
详解React native全局变量的使用(跨组件的通信)
2017/09/07 Javascript
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
vue.js的状态管理vuex中store的使用详解
2019/11/08 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
nodejs处理tcp连接的核心流程
2021/02/26 NodeJs
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
Python中__new__与__init__方法的区别详解
2015/05/04 Python
python绘图方法实例入门
2015/05/19 Python
Python多线程下载文件的方法
2015/07/10 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
浅谈python数据类型及类型转换
2017/12/18 Python
Python中遍历列表的方法总结
2019/06/27 Python
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
正宗的日本零食和糖果订阅盒:Bokksu
2019/11/21 全球购物
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2014/07/21 面试题
报名委托书
2015/01/29 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
体检通知范文
2015/04/21 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
导游词之河北白洋淀
2020/01/15 职场文书
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫