解析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 相关文章推荐
html页面显示年月日时分秒和星期几的两种方式
Aug 20 Javascript
jquery垂直公告滚动实现代码
Dec 08 Javascript
jQuery将多条数据插入模态框的示例代码
Sep 25 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
Mar 22 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
Mar 08 Javascript
jQuery、layer实现弹出层的打开、关闭功能
Jun 28 jQuery
利用C/C++编写node.js原生模块的方法教程
Jul 07 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
Oct 23 Javascript
webpack css加载和图片加载的方法示例
Sep 11 Javascript
VUE 配置vue-devtools调试工具及安装方法
Sep 30 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
Dec 09 Javascript
如何用JavaScipt测网速
May 09 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
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
js实现图片轮播效果学习笔记
2017/07/26 Javascript
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
Vue 实现展开折叠效果的示例代码
2018/08/27 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
解决Vue中 父子传值 数据丢失问题
2019/08/27 Javascript
小程序两种滚动公告栏的实现方法
2019/09/17 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
pandas 对日期类型数据的处理方法详解
2019/08/08 Python
python带参数打包exe及调用方式
2019/12/21 Python
Python3基本输入与输出操作实例分析
2020/02/14 Python
如何利用Python动态模拟太阳系运转
2020/09/04 Python
欧舒丹比利时官网:L’OCCITANE比利时
2017/04/25 全球购物
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
应届生妇产科护士求职信
2013/10/27 职场文书
外贸销售员求职的自我评价
2013/11/23 职场文书
幼儿园教学管理制度
2014/02/04 职场文书
学生会竞聘书范文
2014/03/31 职场文书
银行爱岗敬业演讲稿
2014/05/05 职场文书
学校创先争优活动总结
2014/08/28 职场文书
2014领导班子正风肃纪思想汇报
2014/09/18 职场文书
2014最新自愿离婚协议书范本
2014/11/19 职场文书
求职信如何撰写?
2019/05/22 职场文书
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL