解析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 相关文章推荐
jquery.hotkeys监听键盘按下事件keydown插件
May 11 Javascript
zeroclipboard 单个复制按钮和多个复制按钮的实现方法
Jun 14 Javascript
jQuery响应鼠标事件并隐藏与显示input默认值
Aug 24 Javascript
JavaScript 表单处理实现代码
Apr 13 Javascript
JS建造者模式基本用法实例分析
Jun 30 Javascript
Angular 4依赖注入学习教程之InjectToken的使用(八)
Jun 04 Javascript
基于JSON数据格式详解
Aug 31 Javascript
Vue-CLI 项目在pycharm中配置方法
Aug 30 Javascript
layer.alert自定义关闭回调事件的方法
Sep 27 Javascript
在vue中使用vuex,修改state的值示例
Nov 08 Javascript
jQuery实现B2B网站后台管理系统侧导航
Jul 08 jQuery
使用vue编写h5公众号跳转小程序的实现代码
Nov 27 Vue.js
解析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的配置文件php.ini
2006/10/09 PHP
php smarty 二级分类代码和模版循环例子
2011/06/16 PHP
php daddslashes()和 saddslashes()有哪些区别分析
2012/10/26 PHP
PHP中substr函数字符串截取用法分析
2016/01/07 PHP
PHP会话控制实例分析
2016/12/24 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
纯CSS打造的导航菜单(附jquery版)
2010/08/07 Javascript
js对象数组按属性快速排序
2011/01/31 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
2014/09/22 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
理解javascript定时器中的单线程
2016/02/23 Javascript
JS中Attr的用法详解
2017/10/09 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
javascript中UMD规范的代码推演
2018/08/29 Javascript
基于Angularjs-router动态改变Title值的问题
2018/08/30 Javascript
jQuery easyui datagird编辑行删除行功能的实现代码
2018/09/20 jQuery
vue环形进度条组件实例应用
2018/10/10 Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
2019/02/21 Javascript
CountUp.js实现数字滚动增值效果
2019/10/17 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
Python pickle模块用法实例分析
2015/05/27 Python
小白如何入门Python? 制作一个网站为例
2018/03/06 Python
使用django实现一个代码发布系统
2019/07/18 Python
使用Pandas的Series方法绘制图像教程
2019/12/04 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
Python过滤掉numpy.array中非nan数据实例
2020/06/08 Python
anaconda升级sklearn版本的实现方法
2021/02/22 Python
css3实现超炫风车特效
2014/11/12 HTML / CSS
个人简历自我鉴定
2013/10/11 职场文书
节能环保家庭事迹材料
2014/08/27 职场文书
辩论赛新闻稿
2015/07/17 职场文书