解析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 文章截取部分无损html显示实现代码
May 04 Javascript
Jquery Ajax的Get方式时需要注意URL地方
Apr 07 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
Sep 02 Javascript
JavaScript实现LI列表数据绑定的方法
Aug 04 Javascript
JavaScript操作HTML元素和样式的方法详解
Oct 21 Javascript
JavaScript中自带的 reduce()方法使用示例详解
Aug 10 Javascript
Bootstrap缩略图与警告框学习使用
Feb 08 Javascript
javascript完美实现给定日期返回上月日期的方法
Jun 15 Javascript
详解Vuex中mapState的具体用法
Sep 28 Javascript
JS常见构造模式实例对比分析
Aug 27 Javascript
Vue项目history模式下微信分享爬坑总结
Mar 29 Javascript
jquery实现的分页显示功能示例
Aug 23 jQuery
解析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 超链接 抓取实现代码
2009/06/29 PHP
基于PHPExcel的常用方法总结
2013/06/13 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
2013/08/15 PHP
PHP实现变色验证码实例
2014/01/06 PHP
php+ajax实现文章自动保存的方法
2014/12/30 PHP
PHP封装的HttpClient类用法实例
2015/06/17 PHP
php+mysql实现无限级分类
2015/11/11 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
浅谈javascript的Array.prototype.slice.call
2015/08/31 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
2015/11/05 Javascript
学习JavaScript设计模式(代理模式)
2015/12/03 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
js分页之前端代码实现和请求处理
2017/08/04 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
2017/10/12 Javascript
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
js原生map实现的方法总结
2020/01/19 Javascript
[01:59]深扒TI7聊天轮盘语音出处 1
2017/05/11 DOTA
python批量下载图片的三种方法
2013/04/22 Python
Python自定义函数的创建、调用和函数的参数详解
2014/03/11 Python
Python 转义字符详细介绍
2017/03/21 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
Python 发送邮件方法总结
2020/08/10 Python
Python Django路径配置实现过程解析
2020/11/05 Python
HashMap和Hashtable的区别
2013/05/18 面试题
行政管理人员精品工作推荐信
2013/11/04 职场文书
义和团口号
2014/06/17 职场文书
医院党员公开承诺书
2014/08/30 职场文书
运动会闭幕词
2015/01/28 职场文书