[js高手之路]立即表达式的多种写法与注意点以及in操作符的作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[js高手之路]立即表达式的多种写法与注意点以及in操作符的作用相关的知识,希望对你有一定的参考价值。
立即表达式,在javascript中非常常见, 采用立即表达式可以形成一个局部作用域, 常配合闭包实现模块化编程等其他用途,接下来我们看看,在大多数的框架中,立即表达式都有哪些写法,以及需要注意的点,另外再介绍下in操作符的用法
一、通过小括号把函数声明变成表达式, 然后再外面加个小括号 就可以达到立即调用的效果
1 (function(){
2 console.log( ‘ghostwu‘ );
3 })();
二、!号 把函数声明转化成表达式,再调用
1 !function(){
2 console.log( ‘ghostwu‘ );
3 }();
三、+号 把函数声明转化成表达式,再调用
1 +function(){
2 console.log( ‘ghostwu‘ );
3 }();
四、-号 把函数声明转化成表达式,再调用
1 -function(){
2 console.log( ‘ghostwu‘ );
3 }();
五、波浪符 把函数声明转表达式,再调用
1 ~function(){
2 console.log( ‘ghostwu‘ );
3 }();
六、把调用写在表达式里面
1 (function(){
2 console.log( ‘ghostwu‘ );
3 }());
使用立即表达式,需要注意的地方:
一、1被当做函数调用, 原因在与 没有用分号 把语句隔断,产生歧义
1 //报错, 1被当做函数 1()
2 var n = 1
3 (function(){ console.log( ‘ghostwu‘ ) })()
1 var n = 1;
2 // (function(){ console.log( ‘ghostwu‘ ) })()
3 ;(function(){ console.log( ‘ghostwu‘ ) })()
上例为正确的做法
二、下面这种写法,两个立即表达式, 没有用分号隔开,同样产生歧义,报错
1 (function(){ console.log(‘ghostwu1‘) })()
2 (function(){ console.log(‘ghostwu2‘) })()
正确的写法:
1 ;(function(){ console.log(‘ghostwu1‘) })()
2 ;(function(){ console.log(‘ghostwu2‘) })()
小结:当使用正则表达式, 应该在他的前面加上分号, 在代码压缩的时候就不会出错
in操作符: 判断属性是否在一个对象或者他的原型上
function CreateObj(){ // this.name = ‘ghostwu‘; //true } CreateObj.prototype.name = ‘ghostwu‘; //true var obj = new CreateObj(); console.log( ‘name‘ in obj );
1 var myObj = { 2 age : 22 3 }; 4 console.log( ‘age‘ in myObj ); //true 5 console.log( ‘sex‘ in myObj ); //false
本文出自 “ghostwu” 博客,请务必保留此出处http://ghostwu.blog.51cto.com/11192807/1959334
以上是关于[js高手之路]立即表达式的多种写法与注意点以及in操作符的作用的主要内容,如果未能解决你的问题,请参考以下文章