立即表达式的多种写法与注意点以及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子句 ...
随机推荐
- SQL语言-----数据操作
数据操作 增加数据,insert into 标准格式 insert into 表名 (字段的列表)value(数据列表): 使用set insert into 表名 set 字段1=值,2.....: ...
- java 重载与重写 【转】
首先我们来讲讲:重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态 ...
- Spring ContentNegotiatingViewResolver
1. Spring 返回视图采用了ViewResolver,如果一般是jsp的话,可以采用InternalResourceViewResolver. 2.还可以通过ContentNegotiating ...
- Python爬虫从入门到放弃(十一)之 Scrapy框架整体的一个了解
这里是通过爬取伯乐在线的全部文章为例子,让自己先对scrapy进行一个整理的理解 该例子中的详细代码会放到我的github地址:https://github.com/pythonsite/spider ...
- 阿里云VPC绑定EIP实现SNAT
阿里云VPC需要了解的几个问题 什么是VPC 虚拟私有网络(Virtual Private Network),能够帮助用户基于阿里云构建出一个隔离的网络环境.用户可以完全掌控自己的虚拟网络,包括选择自 ...
- json-server mock数据
前言: 项目开发中,影响项目进程的常常是由于在前后端数据交互的开发流程中停滞,前端完成静态页面的开发后,后端迟迟未给到接口.而现在,我们就可以通过根据后端接口字段,建立一个REST风格的API接口,进 ...
- 浅谈lvs和nginx的一些优点和缺点
借鉴一些网上资料整理了简单的比较: LVS的负载能力强,因为其工作方式逻辑非常简单,仅进行请求分发,而且工作在网络的第4层,没有流量,所以其效率不需要有过多的忧虑. LVS基本能支持所有应用,因为工作 ...
- AC自动机总结及板子(不带指针)
蒟蒻最近想学个AC自动机简直被网上的板子搞疯了,随便点开一个都是带指针的,然而平时用到指针的时候并不多,看到这些代码也完全是看不懂的状态.只好在大概理解后自己脑补(yy)了一下AC自动机的代码,居然还 ...
- Nginx+keepalive局域网其它主机ping vip不通
有两台高可用server server1 192.168.11.10 server2 192.168.11.11 vip :192.168.11.12 配置好keepalive之后在server1 ...
- SQL Server ---T-SQl基本语句
T-SQL 是 SQL-Server 的结构化查询语言. 基本数据操作语言. 基础语句 先创建表 我后面的列子都是用的这一个表,列名啥的 就大概看看吧~~ 纯粹为了学习语句,语法~~所以先创建个表吧~ ...