解析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 相关文章推荐
js 替换
Feb 19 Javascript
解决jquery异步按一定的时间间隔刷新问题
Dec 10 Javascript
jQuery回车实现登录简单实现
Aug 20 Javascript
jquery实现图片随机排列的方法
May 04 Javascript
理解Javascript的动态语言特性
Jun 17 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
Jan 18 Javascript
简单的jQuery banner图片轮播实例代码
Mar 04 Javascript
JavaScript与ActionScript3两者的同性与差异性
Sep 22 Javascript
js中创建对象的几种方式
Feb 05 Javascript
JS实现关闭小广告特效
Jan 29 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
Oct 27 Javascript
开发一个封装iframe的vue组件
Mar 29 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
header导出Excel应用示例
2014/01/24 PHP
PHP CURL 多线程操作代码实例
2015/05/13 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
javascript 学习笔记(onchange等)
2010/11/14 Javascript
jquery异步调用页面后台方法‏(asp.net)
2011/03/01 Javascript
JS获取各种浏览器窗口大小的方法
2014/01/14 Javascript
JavaScript实现按Ctrl键打开新页面
2014/09/04 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
Vue插件之滑动验证码
2019/09/21 Javascript
[00:17]游戏风云独家报道:DD赛后说出数字秘密 吓死你们啊!
2014/07/13 DOTA
Python3基础之list列表实例解析
2014/08/13 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
2019/08/05 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
python连接mysql数据库并读取数据的实现
2020/09/25 Python
python 两种方法删除空文件夹
2020/09/29 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
html svg生成环形进度条的实现方法
2019/09/23 HTML / CSS
FOREO官方网站:LUNA露娜洁面仪
2016/11/28 全球购物
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
Arti-shopping中文官网:大型海外商品一站式直邮平台
2020/03/23 全球购物
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
医学护理系毕业生求职信
2013/10/01 职场文书
市场部规章制度
2014/01/24 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
2015年学校减负工作总结
2015/05/19 职场文书
护士工作心得体会
2016/01/25 职场文书
2016年教代会开幕词
2016/03/04 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
Pygame Event事件模块的详细示例
2021/11/17 Python