zoukankan      html  css  js  c++  java
  • 立即表达式的多种写法与注意点以及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
  • 相关阅读:
    测试amqplib实例,报错 Error: connect ECONNREFUSED 127.0.0.1:5672
    启动vue项目,npm run dev服务起不来报错Error: listen EACCES 0.0.0.0:8080
    win10上安装Docker
    mongodb存储过程
    Versions 出现 SVN Working Copy xxx locked
    Mac OSX Versions输入username按1下都会出现2个字符,并且不能create,解决方法
    Mac OSX 安装nvm(node.js版本管理器)
    jade模板引擎学习笔记(WebsStorm9.0.3+ nodejs+express+jade)
    asp.net首页设置
    两个大数组foreach,找出相同的key数量,所用的时间对比
  • 原文地址:https://www.cnblogs.com/ghostwu/p/7348296.html
Copyright © 2011-2022 走看看