资讯专栏INFORMATION COLUMN

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

meislzhua / 820人阅读

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

立即表达式,在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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84799.html

相关文章

  • 20170822 前端开发日报

    摘要:如果没有学习过计算机科学的程序员,当我们在处理一些问题时,比较熟悉的数据结构就是数组,数组无疑是一个很好的选择。 几种 JavaScript 动画库推荐 JavaScript 库对设计师和开发人员来说,都是非常有用的工具。它们可以为你的网站添加一些超级强大的功能,给用户带来更好的体验。 2017年8月前端开发者超实用干货大合集 在过去的几年当中,网络上所流传的各种设计和开发资源,在素质...

    raoyi 评论0 收藏0
  • 20170822 前端开发日报

    摘要:如果没有学习过计算机科学的程序员,当我们在处理一些问题时,比较熟悉的数据结构就是数组,数组无疑是一个很好的选择。 几种 JavaScript 动画库推荐 JavaScript 库对设计师和开发人员来说,都是非常有用的工具。它们可以为你的网站添加一些超级强大的功能,给用户带来更好的体验。 2017年8月前端开发者超实用干货大合集 在过去的几年当中,网络上所流传的各种设计和开发资源,在素质...

    olle 评论0 收藏0
  • javascript面向对象常见写法优缺

    摘要:我们通过表单验证的功能,来逐步演进面向对象的方式对于刚刚接触的朋友来说,如果要写一个验证用户名,密码,邮箱的功能,一般可能会这么写表单验证全局全局全局这种写法,从功能上来说没有什么问题,但是在团队协作的时候,会造成覆盖全局变量的问题,那要大 我们通过表单验证的功能,来逐步演进面向对象的方式. 对于刚刚接触javascript的朋友来说,如果要写一个验证用户名,密码,邮箱的功能, 一...

    Ajian 评论0 收藏0
  • 〔总结〕容易遗忘JS知识整理

    摘要:命名函数的赋值表达式另外一个特殊的情况是将命名函数赋值给一个变量。这是由于的命名处理所致,函数名在函数内总是可见的。当需要向回调函数传递参数时,可以创建一个匿名函数,在函数内执行真实的回调函数。 1.hasOwnProperty相关 为了判断一个对象是否包含自定义属性而不是原型链上的属性,我们需要使用继承自 Object.prototype 的 hasOwnProperty方法。has...

    explorer_ddf 评论0 收藏0
  • Python 2.x Python 3.x 区别

    摘要:官方也宣布在停止对的维护。并且在很多面试过程中,面试官都会问与的区别。的版本,常被称为,或简称。与部分地支持这种形式的语法。捕获异常的语法由改为。在中,表示八进制字面量的方式只有一种,就是。已经支援新的模组。 前言 如果你是刚接触 Python 的初学者,那你可能是直接学习 Python 3.x 版本。对于 Python 2.x 的版本是不会有所接触。官方也宣布在 2020 停止对 P...

    LittleLiByte 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<