解析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模仿ie的自动完成类似自动完成功的表单
Dec 12 Javascript
javascript返回顶部效果(自写代码)
Jan 06 Javascript
javascript入门教程基础篇
Nov 16 Javascript
Javascript获取随机数的实现方法
Jun 22 Javascript
vue.js入门教程之计算属性
Sep 01 Javascript
js控制台输出的方法(详解)
Nov 26 Javascript
JS简单实现表格排序功能示例
Dec 20 Javascript
Angular的模块化(代码分享)
Dec 26 Javascript
JavaScript获取中英文混合字符串长度的方法示例
Feb 04 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
Aug 25 Javascript
Three.js加载外部模型的教程详解
Nov 10 Javascript
小程序点击图片实现自动播放视频
May 29 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下通过POST还是GET来传值
2008/06/05 PHP
用php解析html的实现代码
2011/08/08 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
2014/10/24 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
关于PHP定时发送服务的解决办法
2017/04/23 PHP
一个收集图片的bookmarlet(js 刷新页面中的图片)
2010/05/27 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
2013/12/20 Javascript
jQuery元素的隐藏与显示实例
2015/01/20 Javascript
javascript学习笔记之函数定义
2015/06/25 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
jquery操作select元素和option的实例代码
2016/02/03 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
python实现的简单文本类游戏实例
2015/04/28 Python
Python编程之多态用法实例详解
2015/05/19 Python
怎样使用Python脚本日志功能
2016/08/14 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
德国大型箱包和皮具商店:Koffer
2019/10/01 全球购物
硅酸盐工业控制专业应届生求职信
2013/11/02 职场文书
群众路线剖析材料
2014/02/02 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
组织鉴定材料
2014/06/02 职场文书
学校清明节活动总结
2014/07/04 职场文书
兽医医药专业求职信
2014/07/27 职场文书
小学生三分钟演讲稿
2014/08/18 职场文书
设备技术员岗位职责
2015/04/11 职场文书
社会实践心得体会范文
2016/01/14 职场文书
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers