关于JS中的方法是否加括号的问题

在我们js编写程序的时候,我们会写很多函数然后调用它们,那么这些函数调用的时候什么时候加()什么时候不加()?记住以下几个要点。

(1)函数做参数时都不要括号。

 function fun(e) {
 alert(e);
 }
 function A(fun, e) {
 fun(e);
 }
 A(fun, 3);//弹出'3',函数fun当做实参传入另一个函数时,不加() 

(2)函数被调用的时候都要加括号。

看上面那段代码,第9行函数A被调用的时候是A();

(3)函数作为赋值符号右边的时候,当无()时传递的是函数这个对象,有()时传递的是函数的返回值。

 function Fun() { return 1; }
 var a = Fun(); //此时的a = 1
 var b = Fun; //b是一个函数的引用 

不加()的函数名作为了一个函数的引用,或者说是一个指针,用于传递函数所在的位置,需要时找到这个函数去执行。

(0)

相关推荐

  • JS方法调用括号的问题探讨

    移动端的html页面, 写了一个函数. 复制代码 代码如下: function showAlert(msg,fn){ showDialog("alert", msg,"温馨提示",260); if(isNull(fn) == false){ $("#SD_confirm").unbind("click"); $("#SD_confirm").bind("click",fn); } } f

  • 为什么JS中eval处理JSON数据要加括号

    由于Ajax的兴起,JSON这种轻量级的数据格式作为客户端与服务器之间的传输格式逐渐地流行起来,进而出现的问题是如何将服务器端构建好的JSON数据转化为可用的JavaScript对象.利用eval函数无疑是一种简单而直接的方法.在转化的时候需要将JSON字符串的外面包装一层圆括号: 复制代码 代码如下: var jsonObject = eval("(" + jsonFormat + ")"); 为什么要加括号? 加上圆括号的目的是迫使eval函数在处理JavaSc

  • 浅谈js中调用函数时加不加括号的问题

    其实总结起来如下: 函数只要是要调用它进行执行的,都必须加括号.此时,函数()实际上等于函数的返回值.当然,有些没有返回值,但已经执行了函数体内的行为,这个是根本,就是说,只要加括号的,就代表将会执行函数体代码. 不加括号的,都是把函数名称作为函数的指针,用于传参,此时不是得到函数的结果,因为不会运行函数体代码.它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行. 所以一般时候我们都是采用的是无括号的原因.这也是由于括号的二义性,因为括号是"函数调用运算符",相当于在执行

  • 基于js里调用函数时,函数名带括号和不带括号的区别

    示例代码: <span style="font-size:18px;">function hi(){ var a = 1; return function(){ console.log(a++); }; }; var aaa = hi(); var bbb = hi; </span> 如以上代码: aaa 是将 hi() 的运行结果赋值给它,即 return 返回的匿名函数,此时有一个闭包,则每次调用 aaa 时都访问的同一个 a,aaa() 第一次运行结果为

  • JS中的eval 为什么加括号

    eval简介 ---eval在ECMA定义中是全局对象原型的方法; ---eval接受的参数是字符串格式的js代码, 将由执行引擎(记得'高级程序设计'还是哪说过, 此时新建一个执行引擎)执行这段字符串, 然后返回结果到eval调用的位置. <!DOCTYPE html> <html> <head> <title>eval学习</title> <script type="text/javascript"> /* e

  • javascript中的括号()用法小结

    1.提高优先级 (1+2)*3 与数学运算中保持一致,先计算1+2再乘以3得出9 同时也可以是其他表达式,如: 复制代码 代码如下: (a+(function(i){return i}(2)))*c 2.函数的参数要放在括号里() 复制代码 代码如下: function fun(a,b,c){    //-} 3.立即执行函数表达式 复制代码 代码如下: (function fun(a,b,c){    //-})(1,2,3) 这里的括号(1,2,3)中的参数对应的是前面函数的参数,当第一个括

  • 关于JS中的方法是否加括号的问题

    在我们js编写程序的时候,我们会写很多函数然后调用它们,那么这些函数调用的时候什么时候加()什么时候不加()?记住以下几个要点. (1)函数做参数时都不要括号. function fun(e) { alert(e); } function A(fun, e) { fun(e); } A(fun, 3);//弹出'3',函数fun当做实参传入另一个函数时,不加() (2)函数被调用的时候都要加括号. 看上面那段代码,第9行函数A被调用的时候是A(); (3)函数作为赋值符号右边的时候,当无()时传

  • 详解在node.js中require方法的加载规则

    require 方法的加载规则 优先从缓存中加载 核心模块 路径形式的模块 第三方模块 一.优先从缓存中加载 main.js:执行加载a.js模块 require('./a') a.js:执行加载b.js模块,并输出a被加载了 require('./b') console.log('a.js 被加载了') b.js:输出b被加载了 console.log('b.js 被加载了') 结果: 可以看出:main去加载a.js,然后a在去加载b.js过程中,并没有打印两次 a.js被加载,Node会直

  • js中settimeout方法加参数

    js中settimeout方法加参数的使用.简单使用看w3school 里面没有参数调用, 例子: 复制代码 代码如下: <script type="text/javascript"> function timedMsg() { var a ="dd"; var t=setTimeout(function(){ cao(a);},3000) } function cao(a) { alert(a); } </script> </head

  • js中split()方法得到的数组长度问题

    定义和用法 split() 方法用于把一个字符串分割成字符串数组. 语法 stringObject.split(separator,howmany) 参数 描述 separator 必需.字符串或正则表达式,从该参数指定的地方分割 stringObject. howmany 可选.该参数可指定返回的数组的最大长度.如果设置了该参数,返回的子串不会多于这个参数指定的数组.如果没有设置该参数,整个字符串都会被分割,不考虑它的长度. 返回值 一个字符串数组.该数组是通过在 separator 指定的边

  • js中延迟加载和预加载的具体使用

    延迟加载(懒加载)和预加载是常用的 web 优化的手段.. 一.延迟加载(懒加载) 原理: 当在真正需要数据的时候,才真正执行数据加载操作. 目的: 延迟加载机制是为了避免一些无谓的性能开销而提出来的 实现延迟加载的几种方法 1. 让 js 最后加载 使用方法: 把 js 外部引入的文件放到页面底部 用途: 让 js 最后引入,从而加快页面加载速度 说明: 流览器之所以会采用同步模式,通常加载 js 文件或者放<script>标签都在结构最后面,也是因为它会阻止浏览器后续操作的原因,所以放在后

  • 用JS中split方法实现彩色文字背景效果实例

    先来看看实现效果图 效果实现步骤: 1.获取要用到的元素: 2.声明一个数组变量(arrColor)存放颜色值: 3.给按钮添加点击事件: 4.获取文本框的value值,并用split方法把文本框的字符串值转换成数组(arr)存放: 5.循环取出存数组(arr)中的值并添加上span标签: 6.设置span标签的背景色:从数组(arrColor)循环取值: 7.把设定好的内容添加到div中: 效果完整代码: <!doctype html> <html> <head> &

  • vue.js中created方法作用

    这是它的一个生命周期钩子函数,就是一个vue实例被生成后调用这个函数.一个vue实例被生成后还要绑定到某个html元素上,之后还要进行编译,然后再插入到document中.每一个阶段都会有一个钩子函数,方便开发者在不同阶段处理不同逻辑. 一般可以在created函数中调用ajax获取页面初始化所需的数据. 实例生命周期 每个 Vue 实例在被创建之前都要经过一系列的初始化过程.例如,实例需要配置数据观测(data observer).编译模版.挂载实例到 DOM ,然后在数据变化时更新 DOM

  • 关于vue.js中实现方法内某些代码延时执行

    今天在工作时遇见了某些代码需要延时操作的情况.具体情况为前台grid在执行完增删改操作后需要在增加或者修改弹框点击确定导致弹框消失后,grid内数据能够及时更新以便显示增删改操作后的数据.这里的话使用的是vue.js中的setTimeout函数来解决该问题. 代码如下: var that = this; setTimeout(function () { that.modifyDialogVisible = false; grid.api.reloadData(); },500); 值得注意的是这

随机推荐