立即表达式的多种写法与注意点以及in操作符的作用

立即表达式,在javascript中非常常见, 采用立即表达式可以形成一个局部作用域, 常配合闭包实现模块化编程等其他用途,接下来我们看看,在大多数的框架中,立即表达式都有哪些写法,以及需要注意的点,另外再介绍下in操作符的用法

1、 通过小括号把函数声明变成表达式, 然后再外面加个小括号 就可以达到立即调用的效果

1         (function(){
2             console.log( 'ghostwu' );
3         })();

2、!号 把函数声明转化成表达式,再调用

1         !function(){
2             console.log( 'ghostwu' );
3         }();

3、+号 把函数声明转化成表达式,再调用

1         +function(){
2             console.log( 'ghostwu' );
3         }();

4、-号 把函数声明转化成表达式,再调用

1         -function(){
2             console.log( 'ghostwu' );
3         }();

5、波浪符 把函数声明转表达式,再调用

1         ~function(){
2             console.log( 'ghostwu' );
3         }();

6、把调用写在表达式里面

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操作符: 判断属性是否在一个对象或者他的原型上
1         function CreateObj(){
2             // this.name = 'ghostwu'; //true
3         }
4         CreateObj.prototype.name = 'ghostwu'; //true
5         var obj = new CreateObj();
6         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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值