解析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.Jwin.js 基于jquery的弹出层插件代码
May 23 Javascript
javascript调试过程中找不到哪里出错的可能原因
Dec 16 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
Dec 17 Javascript
jquery实现省市select下拉框的替换(示例代码)
Feb 22 Javascript
js动态切换图片的方法
Jan 20 Javascript
微信小程序开发之实现自定义Toast弹框
Jun 08 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
Aug 21 Javascript
Vue页面骨架屏的实现方法
May 22 Javascript
js中getter和setter用法实例分析
Aug 14 Javascript
JS实现的A*寻路算法详解
Dec 14 Javascript
JavaScript数组排序小程序实现解析
Jan 13 Javascript
详细介绍解决vue和jsp结合的方法
Feb 06 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
提升PHP执行速度全攻略(上)
2006/10/09 PHP
php用户注册页面利用js进行表单验证具体实例
2013/10/17 PHP
javascript操作cookie的文章(设置,删除cookies)
2010/04/01 Javascript
基于jquery的15款幻灯片插件
2011/04/10 Javascript
js数组循环遍历数组内所有元素的方法
2014/01/18 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
js实现下拉框选择要显示图片的方法
2015/02/16 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
JS中的forEach、$.each、map方法推荐
2016/04/05 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
nodejs连接mysql数据库及基本知识点详解
2018/03/20 NodeJs
apicloud拉起小程序并传递参数的方法示例
2018/11/21 Javascript
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
[01:51]DAC趣味视频-如何成为职业选手.mp4
2017/04/02 DOTA
Python利用字典将两个通讯录文本合并为一个文本实例
2018/01/16 Python
快速了解python leveldb
2018/01/18 Python
flask入门之表单的实现
2018/07/18 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
python实现单链表的方法示例
2019/09/03 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
详解Python3 定义一个跨越多行的字符串的多种方法
2020/09/06 Python
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
客服实习的个人自我鉴定
2013/10/20 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python