s高级-提升

2021/9/2 23:08:57

本文主要是介绍s高级-提升,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

变量和函数声明都会在任何代码被执行前首先被处理。
变量和函数声明从它们在代码中出现的位置被‘移动’到了最上面,这个过程叫作提升。(js解释器在执行js代码之前,会有个编译过程,编译器会把声明部分提升到当前作用域的最上方,这个过程叫作提升)

1.提升注意事项

  • 只有声明会提升,赋值和其他运行逻辑留在原地
  • 每个作用域都会进行提升操作
  • 函数声明会被提升,但函数表达式不会被提升
  • 即使是具名的函数表达式,名称标识符在赋值之前也无法在所在作用域使用
foo()  //TypeError
bar()  //ReferenceError
var foo = function bar(){
	//......
}


上述代码提升后可理解成如下:

var foo;
foo();
bar();
foo = function(){
	bar bar = ...self...
	//...
}

  • 函数优先于变量(当由多个重复声明的代码)
foo();
var foo;
function foo(){
console.log(1);
}
foo = function(){
console.log(2);
}
//输出1
提升后
-----------

function foo(){
console.log(1);
}
foo();
foo = function(){
console.log(2)
}
//var foo由于是重复的声明,因此被忽略了。但是出现在后面的函数声明还是可以覆盖前面的。

重复声明会导致各种问题,因此要避免这种情况。



这篇关于s高级-提升的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程