解析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 相关文章推荐
Query中click(),bind(),live(),delegate()的区别
Nov 19 Javascript
用js代码改变单选框选中状态的简单实例
Dec 18 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
Apr 13 Javascript
实现JavaScript的组成----BOM和DOM详解
May 18 Javascript
浅析$(function) ready和onload 的区别
Sep 03 Javascript
javascript正则表达式模糊匹配IP地址功能示例
Jan 06 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
Apr 13 Javascript
基于Vue中点击组件外关闭组件的实现方法
Mar 06 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
Feb 10 Javascript
JS正则表达式封装与使用操作示例
May 15 Javascript
微信小程序仿通讯录功能
Apr 09 Javascript
如何解决jQuery 和其他JS库的冲突
Jun 22 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的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
php小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
PHP多文件上传类实例
2015/03/07 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
2015/04/17 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
JQuery 学习笔记 选择器之五
2009/07/23 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
Css3制作变形与动画效果
2015/07/24 Javascript
jQuery实现向下滑出的二级菜单效果实例
2015/08/22 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
2016/09/16 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
简单谈谈Javascript函数中的arguments
2017/02/09 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
2017/03/23 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
vue2.0 better-scroll 实现移动端滑动的示例代码
2018/01/25 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
Vue中img的src是动态渲染时不显示的解决
2019/11/14 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
2020/10/13 Javascript
解决Python selenium get页面很慢时的问题
2019/01/30 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
解决tensorflow读取本地MNITS_data失败的原因
2020/06/22 Python
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
大学生旅游业创业计划书
2014/01/29 职场文书
双拥工作宣传标语
2014/06/26 职场文书
2014年教师批评与自我批评思想汇报
2014/09/20 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
总经理司机岗位职责
2015/04/10 职场文书
聘任书范文大全
2015/09/21 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python