发布网友 发布时间:2022-04-22 22:18
共3个回答
懂视网 时间:2022-04-23 02:40
这篇文章主要介绍了JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍,需要的朋友可以参考下某天写代码突然县道这个问题,顺势总结一波
JavaScript 函数和变量声明的“提前”(hoist)行为
简单的说 如果我们使用 匿名函数
var a = {}
这种方式, 编译后变量声明a 会“被提前”了,但是他的赋值(也就是a)并不会被提前。
也就是,匿名函数只有在被调用时才被初始化。
如果使用
function a () {};
这种方式, 编译后函数声明和他的赋值都会被提前。
也就是说函数声明过程在整个程序执行之前的预处理就完成了,所以只要处于同一个作用域,就可以访问到,即使在定义之前调用它也可以。
看一个例子
我们会发现alert(hereOrThere)
语句执行时会alert('there')
!这里的行为其实非常出乎意料,主要原因是JavaScript 函数声明的“提前”行为,简而言之,就是Javascript允许我们在变量和函数被声明之前使用它们,而第二个定义覆盖了第一种定义。换句话说,上述代码编译之后相当于
我们期待的行为
这段程序编译之后相当于:
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
vue2.0 实现页面导航提示引导的方法
vue2.0 根据状态值进行样式的改变展示方法
使用Vuex实现一个笔记应用的方法
热心网友 时间:2022-04-22 23:48
一、调用顺序不同
1、var a=function:匿名函数的定义方法,若是在定义之前调用了,系统会报错。
2、function a:该方法的定义是全局性的,就算在调用之后定义,系统也不会报错。
二、初始化不同
1、var a=function:只用运行到这个方法时才能对变量a进行初始化,若是没有对变量a初始化,则会报错。此时,a代表后面匿名函数的返回值。
2、function a:系统在执行到该方法时再去找该方法的定义位置进行初始化。
三、特点不同
1、var a=function:在javascript中,方法被当作一个类来处理,这中定义方式下,a即带表了这个方法的类,也就是这个方法本身。
2、function a:若是在该方法中,返回值为数组、方法、或是别的类,那么a不在表示该方法,而是表示返回的新类了。
参考资料来源:百度百科-Function函数
参考资料来源:百度百科-Function
热心网友 时间:2022-04-23 01:06
//代码一:原因:JavaScript 函数和变量声明的“提前”(hoist)行为。
区别一:代码一,加载js 代码之后 a 被 “提前",但是 function 里面的具体内容不会被提前。就是在调用 的时候就会去初始化 function 里面的代码块。代码二:加载的时候就 “提前”了。
//代码一: js 作用域污染强烈推荐看下 :
http://www.hu.com/question/19878052