最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍

来源:懂视网 责编:小采 时间:2020-11-27 22:18:29
文档

JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍

JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍:某天写代码突然县道这个问题,顺势总结一波 JavaScript 函数和变量声明的提前(hoist)行为 简单的说 如果我们使用 匿名函数 var a = {} 这种方式, 编译后变量声明a 会被提前了,但是他的赋值(也就是a)并不会被提前。 也就是,匿名函数只有在被调
推荐度:
导读JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍:某天写代码突然县道这个问题,顺势总结一波 JavaScript 函数和变量声明的提前(hoist)行为 简单的说 如果我们使用 匿名函数 var a = {} 这种方式, 编译后变量声明a 会被提前了,但是他的赋值(也就是a)并不会被提前。 也就是,匿名函数只有在被调

某天写代码突然县道这个问题,顺势总结一波

JavaScript 函数和变量声明的“提前”(hoist)行为

简单的说 如果我们使用 匿名函数

var a = {}

这种方式, 编译后变量声明a 会“被提前”了,但是他的赋值(也就是a)并不会被提前。

也就是,匿名函数只有在被调用时才被初始化。

如果使用

function a () {};

这种方式, 编译后函数声明和他的赋值都会被提前。

也就是说函数声明过程在整个程序执行之前的预处理就完成了,所以只要处于同一个作用域,就可以访问到,即使在定义之前调用它也可以。

看一个例子

function hereOrThere() { //function statement
 return 'here';
}
console.log(hereOrThere()); // alerts 'there'
function hereOrThere() {
 return 'there';
}

我们会发现alert(hereOrThere) 语句执行时会alert('there')!这里的行为其实非常出乎意料,主要原因是JavaScript 函数声明的“提前”行为,简而言之,就是Javascript允许我们在变量和函数被声明之前使用它们,而第二个定义覆盖了第一种定义。换句话说,上述代码编译之后相当于

function hereOrThere() { //function statement
 return 'here';
}
function hereOrThere() {//申明前置了,但因为这里的申明和赋值在一起,所以一起前置
 return 'there';
}
console.log(hereOrThere()); // alerts 'there'

我们期待的行为

var hereOrThere = function () { // function expression
 return 'here';
};
console.log(hereOrThere()); // alerts 'here'
hereOrThere = function () {
 return 'there';
};

这段程序编译之后相当于:

var hereOrThere;//申明前置了
hereOrThere = function() { // function expression
 return 'here';
};
console.log(hereOrThere()); // alerts 'here'
hereOrThere = function() {
 return 'there';
};

总结

以上所述是小编给大家介绍的JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍

JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍:某天写代码突然县道这个问题,顺势总结一波 JavaScript 函数和变量声明的提前(hoist)行为 简单的说 如果我们使用 匿名函数 var a = {} 这种方式, 编译后变量声明a 会被提前了,但是他的赋值(也就是a)并不会被提前。 也就是,匿名函数只有在被调
推荐度:
标签: 定义 js fun
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top