js中小括号()的用法详解:
对于小括号无论是菜鸟还是高手一定都不会陌生,可以说它几乎是随处可见,虽然熟悉但并非真正的理解,由此可能会产生很多莫名其妙的错误,下面就通过代码实例详细介绍一下小括号的用法。
更多的关于js运算符内容可以参阅JS教程版块。
一.作为分组运算符:
分组运算符应该是再熟悉不过了,因为在小学数学中就有应用,例如:

[JavaScript] 纯文本查看 复制代码运行代码
1
2
var a=(1+2)*4;
console.log(a);

以上代码的输出值是12,因为分组运算符可以改变运算符的优先级,否则的话输出值是9。
扩展说明:
1.很多教程说它是一个强制运算符,其实在ECMAScript中,根本就没有强制运算符这么一个概念,它就是普通分组运算符。
2.这也是为什么eval()函数将json格式字符串转换为对象需再嵌套一个小括号的原因,可以参阅使用eval()将json字符串转换为对象要多加一个小括号一章节。 
二.函数声明和函数调用参数列表:
在声明函数或者调动函数的时候,如果有参数,那么就会将参数放在小括号之中,代码如下:

[JavaScript] 纯文本查看 复制代码运行代码
1
2
3
4
function func(a,b){
  //代码
}
func(1,2);

三.与特定关键字形成特定语句:
小括号可以与特定的关键词形成特定的语句,代码如下:

[JavaScript] 纯文本查看 复制代码运行代码
1
2
3
4
5
6
7
8
9
if(a>1){
  //代码
}
while(i<len){
  //代码
}
for(var i=0;i<len;i++){
  //代码
}

四.表达式方式函数声明和立即调用函数表达式:
创建一个函数除了函数声明方式声明之外,还可以使用表达式方式,代码如下:

[JavaScript] 纯文本查看 复制代码运行代码
1
2
3
4
5
6
function func(){
  //代码
}
var func=function(){
  //代码
}

第二种就是表达式方式声明一个函数。下面介绍一下函数声明和表达式方式的区别:
函数声明必须带有标识符,也就是函数名,但是函数表达式方式,标识符带不带都可以。

[JavaScript] 纯文本查看 复制代码运行代码
1
2
function 函数名称 (参数:可选){ 函数体 }//函数声明方式
function 函数名称(可选)(参数:可选){ 函数体 }//函数表达式方式

要区分一个代码是函数声明还是函数表达式,那要看代码的应用上下文,例如:

[JavaScript] 纯文本查看 复制代码运行代码
1
2
function func(){};//函数声明方式
(function func(){})//函数表达式方式

出现在运算符相关上下文中,那么它就是一个表达式,例如下面最常见的代码:

[JavaScript] 纯文本查看 复制代码运行代码
1
var func=function(){}

上面介绍一下什么是函数表达式,下面就看一下如何立即调用函数表达式:

[JavaScript] 纯文本查看 复制代码运行代码
1
2
3
(function(){})();
(function(){}());
!function(){}();

上面三个语句都是在运算符相关上下文中,所以都是表达式,就可以强制调用了,下面做一下分析:
1.(function(){})(),(function(){})是一个表达式,会强制其理解成函数直接量方式,也就是表达式方式创建函数,(function(){})它会返回函数对象的引用,最后使用小括号()调用此函数。
2.(function(){}()),如果不用外面包裹的小括号,{}就会理解为复合语句,那么function(){}就被理解为函数声明,但是没有标识符,所以会报错,使用小括号以后,就会变成表达式,也会被理解为直接量方式。
3.!function(){}(),原理同上,!也是一个运算符,所以在原理同上。

js小括号的作用的更多相关文章

  1. bash 中 小括号的作用

    单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格. ...

  2. js进阶正则表达式10-分组-多行匹配-正则对象的属性(小括号作用:分组,将小括号里面的东西看成一个整体,因为量词只对前一个字符有效)(多行匹配:m)(属性使用:reg.global)

    js进阶正则表达式10-分组-多行匹配-正则对象的属性(小括号作用:分组,将小括号里面的东西看成一个整体,因为量词只对前一个字符有效)(多行匹配:m)(属性使用:reg.global) 一.总结 1. ...

  3. JS:javascript 函数后面有多个小括号是怎么回事?f( )( )( )...

    有时我们看见js函数后面跟着多个小括号是怎么回事?f( )( )( )... f()意思是执行f函数,返回子函数 f()()执行子函数,返回孙函数 f()()()执行孙函数 ()()表示定义并执行,使 ...

  4. JS使用正则表达式获取小括号、中括号及花括号内容的方法示例

    本文实例讲述了JS使用正则表达式获取小括号.中括号及花括号内容的方法.分享给大家供大家参考,具体如下: JS 正则表达式 获取小括号 中括号 花括号内的内容 <!DOCTYPE html> ...

  5. js函数声明外面使用小括号括起来再接一个小括号的写法

    js函数声明外面使用小括号括起来再接一个小括号的写法 (function(){})(); (function(){}()); !function(){}(); 总结ps:意思将函数声明变成,直接执行的 ...

  6. javascript实用技巧,js小知识

    一.js整数的操作 使用|0和~~可以将浮点转成整型且效率方面要比同类的parseInt,Math.round 要快,在处理像素及动画位移等效果的时候会很有用.性能比较见此. var foo = (1 ...

  7. JavaScript小括号、中括号、大括号的多义性

    语义1,函数声明时参数表 func(arg1,arg2){ // ... } 语义2,和一些语句联合使用以达到某些限定作用 // 和for in一起使用 for(var a in obj){ // . ...

  8. javascript小括号、中括号、大括号学习总结

    作为一名编程人员,和括号打交道是必不可少的.你可知道在不同的上下文中,括号的作用是不一样的,今天就让我们简单总结下javascript小括号.中括号.大括号的用法. 总的来说,JavaScript中小 ...

  9. shell中各种括号的作用()、(())、[]、[[]]、{}

    一.小括号,圆括号() 1.单小括号 ()    ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有 ...

随机推荐

  1. BZOJ 2595: [Wc2008]游览计划 [DP 状压 斯坦纳树 spfa]【学习笔记】

    传送门 题意:略 论文 <SPFA算法的优化及应用> http://www.cnblogs.com/lazycal/p/bzoj-2595.html 本题的核心就是求斯坦纳树: Stein ...

  2. 简单实现ASP.Net MVC网页播放音乐

    <div> @*音乐*@ <audio id="warning-sound" loop="loop" src="/Areas/Map ...

  3. iPad Pro 10.5+Apple Pencil之专注文献阅读与笔记效率的App综述

    先谈谈我对笔记类App的几点要求--原则是取其精华,略其糟粕,毕竟开发者们还在,App就会不断地被改进: 增删快捷方便:如完美支持Apple Pencil,特定场景下强大的录音功能,单词或短句涂改即可 ...

  4. EF的Join()和Include()差异性教程

    在EF中表连接常用的有Join()和Include(),两者都可以实现两张表的连接,但又有所不同. 1.Join(),两表不必含有外键关系,需要代码手动指定连接外键相等(具有可拓展性,除了值相等,还能 ...

  5. <url-pattern>/</url-pattern>和<url-pattern>/*</url-pattern>区别

    <url-pattern>/</url-pattern>表示的为只匹配/login和/demo后面不带.xxx的网页 <url-pattern>/*</url ...

  6. tomcat使用cookies缓存的时候中文报错解决办法 java.lang.IllegalArgumentException: Control character in cookie value or attribute.

    报错出现 java.lang.IllegalArgumentException: Control character in cookie value or attribute. at org.apac ...

  7. qt pro 设置编译参数,支持 xp

    #兼容 XP VS2015 5.01 版本 win32 { QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01 QMAKE_LFLAGS_CONSOLE = ...

  8. C语言老司机学Python (四)

    字符串格式化: 可以使用类似c语言中sprintf函数的方法进行格式化,但是函数名称是print() 如:print('常量 PI 的值近似为:%5.3f.'  %  var_PI) 注意var_PI ...

  9. shell脚本 awk工具

    awk工具概述awk编程语言/数据处理引擎基于模式匹配检查输入文本,逐行处理并输出通常在shell脚本中,或取指定的数据单独用时,可对文本数据做统计 命令格式格式一:awk [选项] '[条件]{编辑 ...

  10. 讯飞语音JavaWeb语音合成解决方案

    在线语音合成 将文字信息转化为声音信息,给应用配上"嘴巴".我们提供了众多极具特色的发音人(音库)供您选择.其合成音在音色.自然度等方面的表现均接近甚至超过了人声.这种语音合成体验 ...