解析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 相关文章推荐
javascript call和apply方法
Nov 24 Javascript
javascript-简单的计算器实现步骤分解(附图)
May 30 Javascript
Jquery中CSS选择器用法分析
Feb 10 Javascript
JavaScript中的toDateString()方法使用详解
Jun 12 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
Mar 11 Javascript
详解Vue 实例中的生命周期钩子
Mar 21 Javascript
jquery仿微信聊天界面
May 06 jQuery
JS高级技巧(简洁版)
Jul 29 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
May 17 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
Jul 24 Javascript
vue ssr服务端渲染(小白解惑)
Nov 10 Javascript
前端vue+express实现文件的上传下载示例
Feb 18 Vue.js
解析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
用Zend Encode编写开发PHP程序
2010/02/21 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
2019/03/22 PHP
ext form 表单提交数据的方法小结
2008/08/08 Javascript
在jQuery中 常用的选择器介绍
2013/04/16 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
2015/03/05 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
2015/11/07 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
2016/06/21 Javascript
微信小程序 loading 详解及实例代码
2016/11/09 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
2017/01/05 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
解决js中的setInterval清空定时器不管用问题
2020/11/17 Javascript
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
Python文件读写常见用法总结
2019/02/22 Python
python识别图像并提取文字的实现方法
2019/06/28 Python
Python使用scrapy爬取阳光热线问政平台过程解析
2019/08/14 Python
解决tensorflow添加ptb库的问题
2020/02/10 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
python和node.js生成当前时间戳的示例
2020/09/29 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
python绘制汉诺塔
2021/03/01 Python
css3气泡 css3关键帧动画创建的动态通知气泡
2013/02/26 HTML / CSS
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
岳父生日宴会答谢词
2014/01/13 职场文书
卫生院艾滋病宣传活动小结
2014/07/09 职场文书
大二学生学年自我鉴定
2014/09/12 职场文书
汽车转让协议书
2015/01/29 职场文书
Mysql数据库按时间点恢复实战记录
2021/06/30 MySQL
详细聊聊关于Mysql联合查询的那些事儿
2021/10/24 MySQL
vue整合百度地图显示指定地点信息
2022/04/06 Vue.js