JS函数中带与不带括号的区别

本文深入解析JavaScript函数中带括号与不带括号的区别,阐述其执行方式、返回值以及在实际编程中的应用。通过具体实例说明函数调用与函数指针的概念,帮助开发者更清晰地理解函数作用机制。
JS函数中带与不带括号的区别
其实总结起来如下:
函数只要是要调用它进行执行的,都必须加括号。此时,函数()实际上等于函数的返回值。当然,有些没有返回值,但已经执行了函数体内的行为,这个是根本,就是说,只要加括号的,就代表将会执行函数体代码。
不加括号的,都是把函数名称作为函数的指针,用于传参,此时不是得到函数的结果,因为不会运行函数体代码。它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行。



所以一般时候我们都是采用的是无括号的原因。这也是由于括号的二义性,因为括号是“函数调用运算符”,相当于在执行这样一个函数,所以产生的问题在理解了之后也就理解了。


另外:除了两边不加括号,也可以两边都加括号来实现函数的拷贝,而不是执行函数,如果左边无圆括号右边有圆括号,实际就是相当于产生的是一个属性而不是一个方法了,在调用的时候只用属性名或者函数名,而不需要再用函数调用运算符圆括号了,因为它就相当于一个属性,当然也可以用函数调用的方式来调用,加上括号,拿上例子来说就是如果写成person.sayHello =sayHi(),在调用sayHello的时候就可以直接用person.sayHello或者person.sayHello()了,二者都实现相同的效果。


get 是函数自身, get() 是运行函数

var x=get;

那么 x 和 get 是等同的

var x=get();

那么 x 是 函数 get 的返回值

例如

function get(){return 1}
var x=get(); 那么 x 就等于 1 咯

如果是

var x=get;

那么

var y=x(); 和 var y=get(); 都是等价的。
.
### Vue.js 函数调用 括号 vs 括号 区别 在 Vue.js 中,函数调用时是否括号有着同的行为模式。 当事件处理程序被指定时括号,则该处理器会在触发时自动接收事件对象作为其第一个参数。这意味着需要显式传递任何参数给这个方法,在内部它已经被赋予了一个代表当前发生的DOM事件的对象[^5]。 相反,如果为事件绑定的方法加上了圆括号`()`,那么此时实际上已经执行了一次此方法并将其返回的结果赋给了相应的监听器;因此在这种情况下,默认会再接收到由Vue注入的第一个隐式的`event`参数。如果有额外想要传送的数据,则需通过 `$event` 显式地把事件对象传入到目标函数里去。 例如: ```html <!-- 括号 --> <button @click="handleClick">点击这里</button> <script> export default { methods: { handleClick(event) { console.log(event); // 自动获取到了 click 事件对象 } } } </script> ``` ```html <!-- 加括号 --> <button @click="handleClick()">点击这里</button> <script> export default { methods: { handleClick() { // 这里会自动接收到 event 参数 // 如果需要可以这样写 handleClick($event) } } } </script> ``` 另外需要注意的是,对于像 `@click='doSomething(2)'` 这样的情况,每次按钮被按下都会立即执行 doSomething 方法并将数值 2 作为实参传入,而是等待用户交互后再决定具体的行为逻辑。这可能导致一些意外的情况发生,比如页面加载完成后立刻运行某些应该在此刻被执行的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值