Discuss / JavaScript / 理解错误

理解错误

Topic source

晶雷

#1 Created at ... [Delete] [Delete and Lock User]

function (x) { ... }是一个匿名函数,它没有函数名。但是,这个匿名函数赋值给了变量abs,所以,通过变量abs就可以调用该函数。

上述两种定义完全等价 这两种定义并不等价

使用匿名函数 var FUNCTION_NAME = function(){}; 这种方式,编译后变量声明FUNCTION_NAME会被提前,但是它的赋值并不会提前,也就是匿名函数只有在被调用时才被初始化

如果使用 function FUNCTION_NAME(){} 这种方式,编译后函数声明和赋值都会被提前 也就是说函数声明过程在整个程序执行之前的预处理就完成了,所以只要处于同一个作用域,就可以访问到,即使在定义之前调用它也可以

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

作为一个具有良好编程习惯的人来说,函数申明都是在函数调用之前的,所以不会依赖JS引擎的“函数申明提升”这种奇葩设计功能。

在函数式语言中,两者定义是完全等价的。

在JS中,不要去用JS那些奇葩功能,两者定义也是完全等价的。


  • 1

Reply