解析Javascript小括号“()”的多义性


Posted in Javascript onDecember 03, 2013

Javascript中小括号有五种语义

语义1,函数声明时参数表

function func(arg1,arg2){ 
  // ... 
}

语义2,和一些语句联合使用以达到某些限定作用
// 和for in一起使用 
for(var a in obj){ 
  // ... 
} // 和if一起使用 
if(boo){ 
  //... 
} 
// 和while一起使用 
while(boo){ 
  // ... 
} 
// 和do while一起使用 
do{ 
  // ... 
}while(boo)

注意:在与if、while及do while一起使用时小括号会将其中的表达式结果隐式的转换成布尔值。见 JavaScript中的隐式类型转换 。

语义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

function strToJson(str){ 
     // eval 中字符串两旁加了强制运算符() 
     var json = eval('(' + str + ')');  
     return json; 
}

又如使用较多的是匿名函数自执行
(function(){ 
  // ... 
})();
Javascript 相关文章推荐
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
Apr 26 Javascript
Js获取数组最大和最小值示例代码
Oct 29 Javascript
JS对象与json字符串格式转换实例
Oct 28 Javascript
JavaScript数据库TaffyDB用法实例分析
Jul 27 Javascript
基于jquery实现放大镜效果
Aug 17 Javascript
简单分析javascript中的函数
Sep 10 Javascript
AngularJS Phonecat实例讲解
Nov 21 Javascript
jQuery+pjax简单示例汇总
Apr 21 jQuery
ES6入门教程之let和const命令详解
May 17 Javascript
JS基于for语句编写的九九乘法表示例
Jan 04 Javascript
通过npm或yarn自动生成vue组件的方法示例
Feb 12 Javascript
layui写后台表格思路和赋值用法详解
Nov 14 Javascript
解析Javascript中中括号“[]”的多义性
Dec 03 #Javascript
jquery将一个表单序列化为一个对象的方法
Dec 02 #Javascript
jQuery获得内容和属性方法及示例
Dec 02 #Javascript
jquery如何实现锚点链接之间的平滑滚动
Dec 02 #Javascript
jquery通过a标签删除table中的一行的代码
Dec 02 #Javascript
jQuery判断checkbox是否选中的小例子
Dec 02 #Javascript
利用了jquery的ajax实现二级联互动菜单
Dec 02 #Javascript
You might like
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
利用php来自动调用不同服务器上的flash
2006/10/09 PHP
php实现的简单美国商品税计算函数
2015/07/13 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
jquery 插件学习(二)
2012/08/06 Javascript
js 利用image对象实现图片的预加载提高访问速度
2013/03/29 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
JavaScript计时器示例分析
2015/02/05 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
2016/11/03 Javascript
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
微信小程序之批量上传并压缩图片的实例代码
2018/07/05 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
python分割文件的常用方法
2014/11/01 Python
用Python制作简单的钢琴程序的教程
2015/04/01 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
Python 使用PIL numpy 实现拼接图片的示例
2018/05/08 Python
Python处理菜单消息操作示例【基于win32ui模块】
2018/05/09 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
python 自定义异常和异常捕捉的方法
2018/10/18 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
详解python运行三种方式
2019/05/13 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
阳光体育活动方案
2014/02/16 职场文书
干部考核评语
2014/04/29 职场文书
竞选班长演讲稿500字
2014/08/22 职场文书
法人授权委托书样本
2014/09/19 职场文书
先进工作者推荐材料
2014/12/23 职场文书
初中毕业生自我评价
2015/03/02 职场文书
同意报考证明
2015/06/17 职场文书
教师研修随笔感言
2015/11/18 职场文书
导游词之青岛崂山
2019/12/27 职场文书
修改MySQL的数据库引擎为INNODB的方法
2021/05/26 MySQL