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 相关文章推荐
jquery复选框CHECKBOX全选、反选
Aug 30 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
Oct 11 Javascript
JavaScript中发布/订阅模式的简单实例
Nov 05 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
Mar 06 Javascript
javascript实现简单的贪吃蛇游戏
Mar 31 Javascript
聊一聊JS中this的指向问题
Jun 17 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
Nov 05 Javascript
如何提高javascript加载速度
Dec 26 Javascript
Vue数据驱动模拟实现2
Jan 11 Javascript
微信小程序自定义toast的实现代码
Nov 16 Javascript
简单了解JavaScript sort方法
Nov 25 Javascript
jquery实现弹窗(系统提示框)效果
Dec 10 jQuery
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简单socket服务器客户端代码实例
2015/05/18 PHP
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
2010/07/06 Javascript
使用Mootools动态添加Css样式表代码,兼容各浏览器
2011/12/12 Javascript
jquery使用each方法遍历json格式数据实例
2015/05/18 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
javascript显示倒计时控制按钮的简单实现
2016/06/07 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
2016/11/09 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
2017/03/09 Javascript
Angular 数据请求的实现方法
2018/05/07 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
2019/03/19 Javascript
js 计算图片内点个数的示例代码
2019/04/04 Javascript
在Vue中创建可重用的 Transition的方法
2020/06/02 Javascript
Element InputNumber计数器的使用方法
2020/07/27 Javascript
[06:16]《DAC最前线》之地区预选赛全面回顾
2015/01/19 DOTA
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
[49:15]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第二场 1月19日
2021/03/11 DOTA
Python学习笔记(二)基础语法
2014/06/06 Python
python实现定时同步本机与北京时间的方法
2015/03/24 Python
bpython 功能强大的Python shell
2016/02/16 Python
python中如何使用朴素贝叶斯算法
2017/04/06 Python
Python实现的弹球小游戏示例
2017/08/01 Python
Python常见数据类型转换操作示例
2019/05/08 Python
python 如何将数据写入本地txt文本文件的实现方法
2019/09/11 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
python是怎么被发明的
2020/06/15 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
美国折扣香水网站:The Perfume Spot
2020/12/12 全球购物
高中生自我评语大全
2014/01/19 职场文书
学习保证书怎么写
2015/02/26 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
爱国之歌(8首)
2019/09/29 职场文书
解读Vue组件注册方式
2021/05/15 Vue.js
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP