视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
解析Javascript小括号“()”的多义性_javascript技巧
2020-11-27 21:16:45 责编:小采
文档

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(){
// ...
})();

下载本文
显示全文
专题