立即表达式,在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.cnblogs.com/ghostwu/p/7348296.html

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

  1. python中if else语句用法_Python中if-else语句的多种写法

    原博文 2017-02-06 10:24 − 初学Python在看程序时发现python中if-else的多种写法,故对其进行分析. 以下为网络内容: a, b, c = 1, 2, 3 1.常规 i ...

  2. Python中if-else语句的多种写法

    初学Python在看程序时发现python中if-else的多种写法,故对其进行分析. 以下为网络内容: a, b, c = 1, 2, 3 1.常规 if a>b: c = a else: c ...

  3. JavaScript绑定键盘事件的多种写法

    使用JavaScript来绑定键盘事件时,有多种写法,而他们的实现效果实际上是等价的,下面一一来列举. 方式一: function keyboard() {document.onkeydown = f ...

  4. 冒泡排序的多种写法、逻辑

    冒泡排序的多种写法.逻辑 本文提供全流程,中文翻译. Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Bubble Sort - ...

  5. asp.net 连接字符串的多种写法

    一.使用OleDbConnection对象连接OLE DB数据源 1.连接Access 数据库 Access 2000: "provider=Microsoft.Jet.Oledb.3.5; ...

  6. Python:for的多种写法

    >>> list = [1, 2, 3, 4, 5, 6] # 常规写法 >>> for i in list:print(i) 1 2 3 4 5 6# 加上对迭代 ...

  7. 条件if语句的多种写法

    条件语句(if-else)的多种写法 在写一些条件语句的时候可以根据自己的喜好选择写法,而不是千篇一律的第一种写法,也可以提高代码的美观程度;后几种酌情使用,一般来说前两种就行了,用后面几种要小心喽

  8. 实践中的重构11_茴香豆的多种写法

    鲁迅先生的名文孔乙己中,孔乙己纠结于茴香豆的茴字有多种写法,可惜小孩子不愿意学,可惜了孔乙己的一片良苦用心. 一个功能,不同的程序员的实现,基于各种因素,可能是千差万别的.即使是同一个程序员,一般也会 ...

  9. 把算术表达式 表示为一个c语言表达式,正确的写法是____,C与C++程序设计-中国大学mooc-题库零氪...

    第一周:从问题到C语言程序设计 1.1 计算机的问题求解方法随堂测验 1.算法的描述方法除了自然语言之外,还包括: A.流程图 B.NS流程图 C.伪代码 D.程序语言 2.结构化程序设计方法包含三种 ...

最新文章

  1. async await:比requests 更强大
  2. 使用脚本编写 Vim 编辑器,第 5 部分: 事件驱动的脚本编写和自动化
  3. Centos7.0-安装docker
  4. 【Java设计模式】工厂模式
  5. linux中登录p4后,linux下perforce(p4)的使用方法和命令
  6. [图神经网络] 图节点Node表示---GAT
  7. Indian Buffet Process(印度自助餐过程)介绍
  8. oracle 循环继续,oracle – 是否可以继续从异常循环?
  9. 使用Rich Edit控件
  10. 光储充一体化充电站_【储能项目】国家电网与浙江瓯江口新区共建光储充一体化充电站项目...
  11. 计算机科学工学,2016考研工学类专业介绍:计算机科学与技术
  12. 【学习笔记-1】- 非线性规划的最优性一阶/二阶必要条件之例题(12道)
  13. 根据仿人人客户端教程,编程实现Demo
  14. 设置手机最小宽度为1000,无限重启怎么办
  15. Pycharm Professional Edition 激活码(license),有效期至2018年01月30日
  16. 拆解:比银行卡面积还小的充电宝,怎么做到10000mAh?
  17. Win 10 部分软件的界面模糊问题
  18. warning: TCG doesn‘t support requested feature: CPUID.01H:ECX.vmx [bit 5]
  19. 用HTML5实现手机摇一摇的功能并配上声音
  20. 波数与波长 matlab,波长与波数的关系为.PPT

热门文章

  1. 深度学习(七十)darknet 实现编写mobilenet源码
  2. c++ list 获取元素_Python中最常见的10个问题(list)
  3. mac睡眠快捷键_mac键盘快捷键大全哪里有?
  4. c++ 命令行错误: 无法打开 元数据 文件_PostgreSQL:强大的开源对象关系数据库管理系统...
  5. 2016版系统集成项目管理工程师考试题型举例
  6. 新版本vsphere支持最大单个vmdk超过2T,理论上支持最大62T
  7. 展望10年内VR技术的盈利模式的发展历程
  8. cocos2d 入门必备4个基本概念
  9. 「雕爷学编程」Arduino动手做(28)——RGB全彩LED模块
  10. python之路——面向对象进阶