javascript变量提升和函数提升

发布时间:2019-08-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript变量提升和函数提升脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

变量提升

VARiable hoisting变量提升是js比较有特点的地方,它允许你先使用变量,在其后面再进行变量声明,不会抛出 Uncaught ReferenceError异常。虽然变量被提升到前面,但是它的默认值则是undefind,在引用的时候也使用这个值,知道在其面后进行赋值,在使用时候即为所赎的值。

举个例子:

@H_304_8@
console.LOG(x)
//如果后面不定义x 则抛出"ReferenceError: x is not defined
//如果后面对x定义 则打印出undefined
var x = 2


var abc = "abcd";

(function(){
    console.log(abc); //undefined
   var abc = "1234";
  console.log(abc); //"1234"
})()

//上面代码可以这样翻译

var x;
console.log(x)//undefined
var x = 2

var abc = "abcd";

(function(){
  var abc;
  console.log(abc); //undefined
  var abc = "1234";
  console.log(abc); //"1234"
})()

基于这个原因,在平时编写代码时候,尽量把变量声明放到代码块最顶层位置,可以使代码结构清晰。
注意的是,在ES6语法中新增的let or const 声明方式,并不支持这种变量提升,强行使用会抛出错误ReferenceError

函数提升

对于函数提升,只用函数的声明被提升,表达式则不会被提升

/* 函数声明 */

foo(); // "bar"

function foo() {
  console.log("bar");
}
/* 函数表达式   表达式定义的函数,称为匿名函数。匿名函数没有函数提升。*/

baz(); // TyPEError: baz is not a function
//此时的"baz"相当于一个声明的变量,类型为undefined。
由于baz只是相当于一个变量,因此浏览器认为"baz()"不是一个函数。
var baz = function() {
  console.log("bar2");
};

脚本宝典总结

以上是脚本宝典为你收集整理的javascript变量提升和函数提升全部内容,希望文章能够帮你解决javascript变量提升和函数提升所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。