解析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 相关文章推荐
Juqery Html(),append()等方法的Bug解决方法
Dec 13 Javascript
基于jQuery的为attr添加id title等效果的实现代码
Apr 20 Javascript
使用jquery修改表单的提交地址基本思路
Jun 04 Javascript
深入了解Node.js中的一些特性
Sep 25 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
Feb 23 Javascript
vue.js实例对象+组件树的详细介绍
Oct 20 Javascript
vue路由懒加载的实现方法
Mar 12 Javascript
微信小程序实现文字无限轮播效果
Dec 28 Javascript
使用vuex存储用户信息到localStorage的实例
Nov 11 Javascript
小程序富文本提取图片可放大缩小
May 26 Javascript
vue自定义树状结构图的实现方法
Oct 18 Javascript
vue 如何使用递归组件
Oct 23 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制作静态网站的模板框架(三)
2006/10/09 PHP
PHP MemCached高级缓存配置图文教程
2010/08/05 PHP
PHP里8个鲜为人知的安全函数分析
2014/12/09 PHP
YII框架常用技巧总结
2019/04/27 PHP
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
JavaScript 保存数组到Cookie的代码
2010/04/14 Javascript
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
Js制作点击输入框时默认文字消失的效果
2015/09/05 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
2015/11/15 Javascript
在页面中输出当前客户端时间javascript实例代码
2016/03/02 Javascript
javascript实现简易计算器的代码
2016/05/31 Javascript
javascript数据结构中栈的应用之符号平衡问题
2017/04/11 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
基于Vue渲染与插件的加载顺序的问题详解
2018/03/05 Javascript
小程序实现左滑删除效果
2019/07/25 Javascript
跟老齐学Python之大话题小函数(2)
2014/10/10 Python
python中defaultdict的用法详解
2017/06/07 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
python操作excel的方法(xlsxwriter包的使用)
2018/06/11 Python
python实现kNN算法识别手写体数字的示例代码
2019/08/16 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
Pycharm如何运行.py文件的方法步骤
2020/03/03 Python
python访问hdfs的操作
2020/06/06 Python
python中如何写类
2020/06/29 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
python 利用百度API识别图片文字(多线程版)
2020/12/14 Python
美国最大的半成品净菜电商:Blue Apron(蓝围裙)
2018/04/27 全球购物
人力资源主管岗位职责
2014/01/29 职场文书
电大毕业个人生自我鉴定
2014/03/26 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
学校党支部承诺书
2015/04/30 职场文书
小学运动会通讯稿
2015/07/18 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers