js函数名后面加括号与不加括号的区别
2018-01-22 17:41
246 查看
今天看文档的时候,发现了一个问题:
对象的方法为什么只有函数名,后面没有()?
回想一下平时的写法:
采用匿名函数来定义一个对象的方法
再参照js对象方法的定义:1.对象的方法定义了一个函数,并作为对象的属性存储 2.对象的方法通过添加( )调用
显然,对象的方法定义了一个函数,但是并没有调用,如果加上( ),则函数会立即被调用。
附:如下函数:
分别打印
test: function test() {return "test";} //函数表达式
test(): test //函数执行结果
是不是很像?
为什么可以直接使用函数名呢?参照js函数定义:
函数可以通过声明定义,也可以是一个表达式。
函数声明:
函数表达式存储在变量中,变量可作为一个函数使用,实际上就是一个匿名函数。
总结一下:“functionName”既是函数名,又是一个函数表达式。
var options = { target: '#output1', // target element(s) to be updated with server response beforeSubmit: showRequest, // pre-submit callback success: showResponse // post-submit callback // other available options: //url: url // override for form's 'action' attribute //type: type // 'get' or 'post', override for form's 'method' attribute //dataType: null // 'xml', 'script', or 'json' (expected server response type) //clearForm: true // clear all form fields after successful submit //resetForm: true // reset the form after successful submit }; // pre-submit callback function showRequest(formData, jqForm, options) { return true; }
对象的方法为什么只有函数名,后面没有()?
回想一下平时的写法:
var options = { target: '#output1', // target element(s) to be updated with server response beforeSubmit: function() {}, success: showResponse // post-submit callback // other available options: //url: url // override for form's 'action' attribute //type: type // 'get' or 'post', override for form's 'method' attribute //dataType: null // 'xml', 'script', or 'json' (expected server response type) //clearForm: true // clear all form fields after successful submit //resetForm: true // reset the form after successful submit };
采用匿名函数来定义一个对象的方法
再参照js对象方法的定义:1.对象的方法定义了一个函数,并作为对象的属性存储 2.对象的方法通过添加( )调用
显然,对象的方法定义了一个函数,但是并没有调用,如果加上( ),则函数会立即被调用。
附:如下函数:
function test() { return "test"; }
分别打印
test: function test() {return "test";} //函数表达式
test(): test //函数执行结果
是不是很像?
var test = function() { return "test"; }
为什么可以直接使用函数名呢?参照js函数定义:
函数可以通过声明定义,也可以是一个表达式。
函数声明:
function functionName(parameters) { 执行的代码 }函数表达式:
函数表达式存储在变量中,变量可作为一个函数使用,实际上就是一个匿名函数。
var x = function (a, b) {return a * b;} var z = x(4, 3);
总结一下:“functionName”既是函数名,又是一个函数表达式。
相关文章推荐
- JS中函数名后面的括号加与不加的区别和作用?
- JS中函数名后面的括号加与不加的区别和作用?
- JS中函数名后面的括号加与不加的区别
- js 把一个函数赋给一个变量时带括号与不带括号的区别
- JS调用函数的后面加括号与不加括号的区别
- js中函数调用加括号和不加括号的区别
- js函数加括号和不加括号的区别
- JS函数名加括号和不加括号的区别
- js中给函数传参函数时,函数加括号与不加括号的区别
- 基于js里调用函数时,函数名带括号和不带括号的区别
- JS函数中带与不带括号的区别
- js中关于事件处理函数名后面是否带括号的问题
- js里调用函数时,函数名带括号和不带括号的区别
- 学习笔记:js里调用函数时,函数名带括号与不带括号的区别
- Js事件绑定时,函数名加括号和不加括号有什么区别
- js普通函数加括号与不加括号的区别
- <转>js中关于事件处理函数名后面是否带括号的问题
- JS中关于事件处理函数名后面是否带括号的问题
- JS中关于事件处理函数名后面是否带括号的问题
- JavaScript-js中把一个函数赋给一个对象时带不带括号的区别?