【JavaScript】中两个小括号 ()() 是什么意思
来源:互联网 发布:c语言的memcpy 编辑:程序博客网 时间:2024/04/29 13:44
</pre></div></div><pre name="code" class="javascript">function Foo() {var a = 123;this.a = 456;(function() {alert(a); // 123alert(this.a); // undefined})();}var f = new Foo();以上代码,先显示 123,再显示 undefined,说明 alert(this.a); 这句中 this 是指本 function 的,而不是其外部 function 的。如果要使用外部的成员,可使用参数的形式传入:
function Foo() {var a = 123;this.a = 456;(function(a) {alert(a); // 456})(this.a);}var f = new Foo();
很好理解,再看看下面的:
function Foo() {var a = 123;this.a = 456;(function() {alert(a); // 123alert(this.a); // undefinedthis.b = 789;})();(function() {alert(this.b); // 789})();}var f = new Foo();(function() {alert(this.b); // 789})();同样是先显示 123,然后显示 undefined,然后显示 789,最后又是一个 789。这说明用两个小括号括起来的都是位于一个执行上下文中的,不论这些代码放在哪里。
再看看:
function Foo() {(function() {this.b = 789;})();(function() {alert(this.b); // 789var b = 0;alert(b); // 0})();}var f = new Foo();(function() {alert(this.b); // 789alert(b); // 789})();令人意外的是,最后一个 alert(b),结果仍然是 789。
更深入一步:
function Foo() {(function() {this.b = 789;})();(function() {alert(this.b); // 789alert(b); // undefinedvar b = 0;alert(b); // 0})();}var f = new Foo();(function() {alert(this.b); // 789alert(b); // 789})();从上,我们可以看出,取值时、没有加 this 时:如果当前 () 中不存在同名的局部变量,则等同于加 this 处理;如果当前 () 中存在同名的局部变量,则按常规处理。
- 【JavaScript】中两个小括号 ()() 是什么意思
- JavaScript小括号是什么意思?
- JavaScript小括号、中括号、大括号的多义性
- JavaScript小括号、中括号、大括号的多义性
- JavaScript小括号、中括号、大括号的多义性
- JavaScript小括号、中括号、大括号的多义性
- JavaScript小括号、中括号、大括号的多义性
- js中两个小括号的用法
- JavaScript 两个小括号 ()() 对执行上下文的影响
- JS 两个小括号
- javascript的小括号
- shell 小括号中括号大括号
- [shell] 小括号、中括号、大括号
- >> 在javascript中是什么意思?
- javascript 中 offsetWidth 是什么意思?
- javascript 中 offsetWidth 是什么意思?
- c#中两个问号(??)是什么意思
- bash 括号(小括号,双小括号,中括号,双中括号,大括号)
- session_start()使用之前,要保证没有向浏览器输出过任何内容
- Ubuntu9以上手动安装Netbeans菜单乱码
- 调用新浪接口,获取电脑ip,所在省份城市
- 今天开始要学C#了
- 关于BlalzeDs RDS
- 【JavaScript】中两个小括号 ()() 是什么意思
- poj3694 总结
- C# 值类型
- JS_placeholder
- Qt 模型类 (转)
- Linux中查看系统资源占用情况的命令
- asp.net mvc app deployment on II7.5
- 修改ubuntu的默认文件夹
- 以蜜代糖促进心脑血管健康