解析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 相关文章推荐
用正则获取指定路径文件的名称
Feb 27 Javascript
js 自定义个性下拉选择框示例
Aug 20 Javascript
百度地图自定义控件分享
Mar 04 Javascript
在JavaScript应用中实现延迟加载的方法
Jun 25 Javascript
js实现固定显示区域内自动缩放图片的方法
Jul 18 Javascript
JS实现根据文件字节数返回文件大小的方法
Aug 02 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
Dec 28 Javascript
GOJS+VUE实现流程图效果
Dec 01 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
May 21 Javascript
javascript 高级语法之继承的基本使用方法示例
Nov 11 Javascript
js实现html滑动图片拼图验证
Jun 24 Javascript
VUE动态生成word的实现
Jul 26 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
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
PHP缩略图生成和图片水印制作
2017/01/07 PHP
Yii框架批量插入数据扩展类的简单实现方法
2017/05/23 PHP
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
通过判断JavaScript的版本实现执行不同的代码
2010/05/11 Javascript
Jquery常用技巧收集整理篇
2010/11/14 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
用javascript作一个通用向导说明
2011/08/30 Javascript
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
2015/09/01 Javascript
JavaScript DOM 学习总结(五)
2015/11/24 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
JavaScript地理位置信息API
2016/06/11 Javascript
nodeJs内存泄漏问题详解
2016/09/05 NodeJs
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
vue-cli+webpack项目 修改项目名称的方法
2018/02/28 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
浅谈Python接口对json串的处理方法
2018/12/19 Python
python爬虫 urllib模块反爬虫机制UA详解
2019/08/20 Python
python绘制封闭多边形教程
2020/02/18 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
工程总经理工作职责
2013/12/09 职场文书
保安的辞职报告怎么写
2014/01/20 职场文书
县优秀教师事迹材料
2014/01/31 职场文书
创业者迈进成功第一步:如何写创业计划书?
2014/03/22 职场文书
学校督导评估方案
2014/06/10 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
委托代理人授权委托书范本
2014/09/24 职场文书
销售员岗位职责
2015/02/10 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书
MIME类型中application/xml与text/xml的区别介绍
2022/01/18 HTML / CSS