Javascript 中的小括号 “()” 的多义性
Javascript 中小括号有5 种语义
语义1:函数声明时参数表
1 function func(arg1, arg2){
2 // ...
3 }
语义2:和一些语句联合使用以达到某些限定作用
1 // 和 for in 一起使用
2 for(var a in obj){
3 // ...
4 }
5
6 // 和 if 一起使用
7 if(boo){
8 //...
9 }
10
11 // 和 while 一起使用
12 while(boo){
13 // ...
14 }
15
16 // 和 do while 一起使用
17 do{
18 // ...
19 }while(boo)
注意:在与 if、while 及 do while 一起使用时小括号会将其中的表达式结果隐式的转换成布尔值。见无处不在的隐式类型转换 。
语义3:和 new一起使用用来传值(实参)
// 假设已经定义了类 Person,它有两个字段姓名(name),年龄(age)
var p1 = new Person('Jack', 26);
语义4:作为函数或对象方法的调用运算符(如果定义了参数也可与语义3一样传实参)
// 假设已经定义了函数 func
func();
// 假设已经定义了对象 obj,且拥有 func 方法
obj.func();
这里提下 typeof 运算符,有人喜欢这么使用:
typeof(xxx);
请注意 typeof 后的小括号并非语义4(即不是函数调用),而是后面提到的语义5。我使用typeof一般不加后面的小括号。
另见具名函数的四种调用方式。
语义5:强制表达式运算
关于语义5,大家最熟悉的莫过于使用 eval 解析 JSON
1 function strToJson(str){
2 // eval 中字符串两旁加了强制运算符()
3 var json = eval('(' + str + ')');
4 return json;
5 }
又如使用较多的是匿名函数自执行
1 (function(){
2 // ...
3 })();
注意,以上代码第一对小括号是语义5,第二对则是语义4。
Javascript 中的小括号 “()” 的多义性的更多相关文章
- Python中的小括号()、中括号[]、花括号{}区别
Python中最常见括号的区别: 在Python语言中最常见的括号有三种,分别是:小括号().中括号[].花括号{}:其作用也不相同,分别用来代表不同的Python基本内置数据类型. Python中的 ...
- Javascript小括号“()”的多义性
摘要:本文主要介绍JavaScript中小括号有五种语义. Javascript中小括号有五种语义 语义1,函数声明时参数表 function func(arg1,arg2){ // ... } 语义 ...
- 关于 JavaScript 中一个小细节问题 (在控制台中直接 {Name:'王尼玛',Age:20} 对象报错问题)
在 Chrome 浏览器,大家可能遇到这样一个小问题. 随便输入一个 Object 对象 ,比如 {Name:'王尼玛',Age:20} ,将会报错.之前,也从来没去考虑过到底是为啥原因. 今天,刚 ...
- javaScript中的小细节-局部作用域中的var
javaScript中var是很神奇的,在局部作用域中,var a = b = c = 1;是不一样的,a为使用var声明的变量,而b和c则是全局下的,此类变量被称为隐式全局变量:var a = 1; ...
- 私人定制javascript中函数小知识点
函数的定义 首先在javascript中,函数就是对象,程序可以随意操控它们.比如,可以给它们设置属性,甚至调用它们的方法.函数使用function关键字来定义.它既可以用在函数定义表达式,也可以用在 ...
- 私人定制javascript中对象小知识点(Only For Me)
废话不多讲,先上笑话,然后再,.看懂这个的说明你的节操已经不再了. 晚饭后去理发店理发...割了吧...老板问我怎么剪,我悠悠的来一句往帅了剪...高潮往往令人想不到....旁边一在焗油烫头发的大妈说 ...
- javaScript中的小细节-script标签中的预解析
首先介绍预解析,虽然预解析字面意思很好理解,但是却是出坑出的最多的地方,也是bug经常会有的地方,利用好预解析的特性可以解决很多问题,并且提高代码的质量及数量,浏览器在解析代码前会把变量的声明和函数( ...
- 私人定制javascript中数组小知识点(Only For Me)
先上笑话,1.刚看到一个游泳的,想起公司组织去三亚旅游,老板跳海里,各种挣扎,捞上来老板第一句话:我记得我会游泳的啊. 2.媳妇说:老公对不起,我把你新买的自行车撞散架了! 老公:没事宝贝,你若安好, ...
- Linux中的小括号和大括号,${}/$()/()/{}/${var:-string}/${var:=string}/${var:+string}/${var:?string}/${var%pattern}/${var#pattern}/${var%%pattern}/${var##pattern}
简单记录一下大小括号在Linux中的用处. 1.${var},这是Linux中变量的原形.所以$var,别忘记了你的本来面目. # a= # echo $a # echo ${a} # echo ${ ...
随机推荐
- iOS:UIView的block函数实现转场动画---双视图
使用UIView动画函数实现转场动画——双视图 + (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView durati ...
- Android java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor ver
java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor ver 解决 ...
- 51nod 1049 1049 最大子段和 (dp)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1049 令 dp[i]表示为以a[i]结尾的最大子段和,则 dp[i]= ...
- java生成带html样式的word文件
参考:http://blog.csdn.net/xiexl/article/details/6652230 最近在项目中需要将通过富文本编辑器处理过的文字转换为Word,查了很久,大家通常的解决办法是 ...
- ogre世界坐标鱼屏幕坐标相互转换
bool worldCoordToScreen(Vector3 objPos, Camera* cam, Vector2 screenRect, Vector2& screenPos) { ...
- 多线程安全的HTTPCLIENT
private static HttpClient httpClient; static { HttpParams params = new BasicHttpParams ...
- CSS样式的特点与优先选择权
CSS样式的特点:(子元素会继承父元素的某些样式,子元素有自己的样式就用自己的样式,没有的就用父元素的) 1.继承: 网页中子元素,将继承父元素的样式(比如要控制p ...
- jint
nuget地址 https://www.nuget.org/packages/Jint/ github上源代码 https://github.com/sebastienros/jint
- HDU 5033 (单调栈维护凸包) Building
题意: 一个人在x轴上,他的左右两侧都有高楼,给出楼的横坐标Xi和高度Hi还有人的位置pos,求人所能看到的天空的最大角度. 分析: 将建筑物和人的位置从左到右排序,对于每个位置利用栈求一次人左边建筑 ...
- win7x64安装wince6
Windows Embedded CE 安装方法 Wince的安装相对比较复杂,即使是一个Wince的老手,也可能遇到这样那样的问题.想来真是悲摧,Windows XP, Windows 7,64位, ...