立即表达式的多种写法与注意点以及in操作符的作用
立即表达式,在javascript中非常常见, 采用立即表达式可以形成一个局部作用域, 常配合闭包实现模块化编程等其他用途,接下来我们看看,在大多数的框架中,立即表达式都有哪些写法,以及需要注意的点,另外再介绍下in操作符的用法
1、 通过小括号把函数声明变成表达式, 然后再外面加个小括号 就可以达到立即调用的效果
(function(){
console.log( 'ghostwu' );
})();
2、!号 把函数声明转化成表达式,再调用
!function(){
console.log( 'ghostwu' );
}();
3、+号 把函数声明转化成表达式,再调用
+function(){
console.log( 'ghostwu' );
}();
4、-号 把函数声明转化成表达式,再调用
-function(){
console.log( 'ghostwu' );
}();
5、波浪符 把函数声明转表达式,再调用
~function(){
console.log( 'ghostwu' );
}();
6、把调用写在表达式里面
(function(){
console.log( 'ghostwu' );
}());
使用立即表达式,需要注意的地方:
一、1被当做函数调用, 原因在与 没有用分号 把语句隔断,产生歧义
//报错, 1被当做函数 1()
var n = 1
(function(){ console.log( 'ghostwu' ) })()
var n = 1;
// (function(){ console.log( 'ghostwu' ) })()
;(function(){ console.log( 'ghostwu' ) })()
上例为正确的做法
二、下面这种写法,两个立即表达式, 没有用分号隔开,同样产生歧义,报错
(function(){ console.log('ghostwu1') })()
(function(){ console.log('ghostwu2') })()
正确的写法:
;(function(){ console.log('ghostwu1') })()
;(function(){ console.log('ghostwu2') })()
小结:当使用正则表达式, 应该在他的前面加上分号, 在代码压缩的时候就不会出错
function CreateObj(){
// this.name = 'ghostwu'; //true
}
CreateObj.prototype.name = 'ghostwu'; //true
var obj = new CreateObj();
console.log( 'name' in obj );
var myObj = {
age : 22
};
console.log( 'age' in myObj ); //true
console.log( 'sex' in myObj ); //false
立即表达式的多种写法与注意点以及in操作符的作用的更多相关文章
- javascript立即调用的函数表达式N种写法(第二篇)
原文:javascript立即调用的函数表达式N种写法(第二篇) 上一篇博客我谈到将函数声明转换为函数表达式最常见的一种写法是:通过括号()将匿名函数声明转换为函数表达式即(function(){}) ...
- asp.net 连接字符串的多种写法
一.使用OleDbConnection对象连接OLE DB数据源 1.连接Access 数据库 Access 2000: “provider=Microsoft.Jet.Oledb.3.5;Data ...
- spring的基于xml的AOP配置案例和切入点表达式的一些写法
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
- Python if 和 for 的多种写法
a, b, c = 1, 2, 3 [对比Cpp里:c = a >b? a:b]这个写法,Python只能常规的空行,缩进吗? 人生苦短,我用python,下面介绍几种if的方便的方法. 1.常 ...
- thinkphp的条件的多种写法
class SelectAction extends Action{ function index(){ //thinkphp 查询语言 // 1.普通查询 // 2.区间查 ...
- 解析JavaScript函数的多种写法
本文主要分析了JavaScript中函数的几种写法,具体如下: 1.函数的声明和表达式(旧方法,也是最常见的方法) 2.通过Function构造器 这也是一种从一开始就存在方法,但是因为书写麻烦等原因 ...
- Python中if-else的多种写法
a, b= 1, 2 将a和b两个变量中的最大值赋值给c (1)常规写法 if a>b: c = a else: c = b (2)表达式 c = a if a>b e ...
- angularjs中ng-class常用写法,三元表达式、评估表达式与对象写法
壹 ❀ 引 ng-class可以说在angularjs样式开发中使用频率特别高了,这不我想利用ng-class的三元运算符的写法来定义一个样式,结果怎么都想不起来正确写法,恼羞成怒还是整理一遍吧,那 ...
- TSQL order by 子句中排序列的多种写法
Order by 子句用于对结果进行排序,执行顺序位于select子句之后,排序列有4中写法: column_name column_alias,由于order by子句的执行顺序位于select子句 ...
随机推荐
- 第二章:2.9 总结一下 Django
1. URLconf(URL configuration ) : 这个模块包含URL模式(正则表达式)到视图函数(view.py)的简单映射. 2. python 正则表达式: 解释: 通配符:r : ...
- Html的基本元素(Element)
本人写这篇文章是我在IT修真园里学习了一段时间,反过来复习时整理的.虽然只是些基础知识内容,希望能帮到大家. 首先我们要了解所谓的html它的定义是什么? [html:超文本标记语言,文本:txt格式 ...
- webgl开发第一道坎——矩阵与坐标变换
一.齐次坐标 在3D世界中表示一个点的方式是:(x, y, z);然而在3D世界中表示一个向量的方式也是:(x, y, z);如果我们只给一个三元组(x, y, z)鬼知道这是向量还是点,毕竟点与向量 ...
- (转)mq经验总结-转
场景:学习mq相关的知识,发现这是一篇总结性很强的文章,转过来学习学习! 1 mq经验总结 首先了解什么是mq?mq的作用是什么? mq是通讯中间件.他的作用是省去开发人员开发通讯工具的时间,节省开发 ...
- 几种常见排序算法原理&C语言实现
一.冒泡排序(以下各法均以从小到大排序为例,定义len为数组array的长度) 原理:比较相邻元素的大小,对于每次循环,按排序的规则把最值移向数组的一端,同时循环次数依次减少. C代码实现 写法一: ...
- 微信小程序框架探究和解析
何为框架 你对微信小程序的技术框架了解多少? 对wepy 框架进行一系列的深入了解 微信小程序框架解析和探究 小程序组件化框架WePY 在性能调优上做出的探究 开发者培训班上海专场PPT分享:小程序框 ...
- pwnable.kr bof之write up
这一题与前两题不同,用到了静态调试工具ida 首先题中给出了源码: #include <stdio.h> #include <string.h> #include <st ...
- Jenkins发布MVC应用程序
一个大的项目一般都会进行模块化.层次化分隔,每个模块.每个层次都可能是一个或多个工程文件组成,而且各个模块都有依赖关系,有先后顺序,先build哪个然后再build哪个都是有顺序的,如果想build一 ...
- JAVA多线程之wait/notify
本文主要学习JAVA多线程中的 wait()方法 与 notify()/notifyAll()方法的用法. ①wait() 与 notify/notifyAll 方法必须在同步代码块中使用 ②wait ...
- python-插入排序
所谓插入排序,就是检查第i个数字,若比它的左边的数字小,则进行交换,一直持续这个动作,直到它的左边的数字比它还要小,则停止. #coding:utf-8def insertion_sort(nums) ...