解析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 相关文章推荐
让Firefox支持event对象实现代码
Nov 07 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
Mar 24 Javascript
Jvascript学习实践案例(开发常用)
Jun 25 Javascript
js中匿名函数的创建与调用方法分析
Dec 19 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
Aug 17 Javascript
javascript replace()第二个参数为函数时的参数用法
Dec 26 Javascript
JavaScript字符串对象(string)基本用法示例
Jan 18 Javascript
jQuery实现的简单前端搜索功能示例
Oct 28 jQuery
详解auto-vue-file:一个自动创建vue组件的包
Apr 26 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
Apr 01 Javascript
JavaScript鼠标拖拽事件详解
Apr 03 Javascript
Vue路由的模块自动化与统一加载实现
Jun 05 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与MySQL开发中页面乱码的产生与解决
2008/03/27 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
SWFObject 2.1以上版本语法介绍
2010/07/10 Javascript
javascript写的异步加载js文件函数(支持数组传参)
2014/06/07 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
理解JavaScript中worker事件api
2015/12/25 Javascript
js console.log打印对像与数组用法详解
2016/01/21 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
Angularjs处理页面闪烁的解决方法
2017/03/09 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
2019/09/05 Javascript
vue项目中在可编辑div光标位置插入内容的实现代码
2020/01/07 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
Element Dialog对话框的使用示例
2020/07/26 Javascript
Python断言assert的用法代码解析
2018/02/03 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
Python实现Event回调机制的方法
2019/02/13 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
香港个人化生活购物网站:Ballyhoo Limited
2016/09/10 全球购物
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
10的分与合教学反思
2014/04/30 职场文书
团队拓展活动总结
2014/08/27 职场文书
专题民主生活会对照检查材料思想汇报
2014/09/29 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
党员带头倡议书
2015/04/29 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏