企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
为什么JS调用函数时,有时不带括号,有时又带括号? 比如定义一个无参函数funtion get() {......}, 然后后面调用它时有时写var x=get;有时又是var x=get();怎么回事? 答: >var x=get; //传递的是函数对象 var x=get(); //传递的是函数返回值 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(); 都是等价的。 这是对一个方法调用 是方法本身的调用不需要括号 带括号是函数的调用 有返回值 使用js之前,要理解,everything is object ,任何东西都是对象。 所以function也是对象 function my(){}; 其实就是生成了一个名字叫做my的对象,这个对象是个function对象,它等同于 var my=function(){}; 他们的区别是作用域不同,前者是window级别是globar的,一些浏览器认为是window对象下面的my属性。后者是当前作用域下的my对象 一般在my后面加上() 认为是执行这个function对象中的内容。由此得知 var my1=my;//其实就是吧my对象赋值给my1 my1是个function对象。 var my1=my();//先执行my对象映射的函数,然后把执行结果(return关键字返回的值)给my1. 当然如果my函数中没有return 则返回undefind。 其实这些很多时候都不用问,执行执行就都清楚了。