第63天 举例子说明javascript的变量声明提升和函数声明提升
var getName = function(){
console.log(4)
}
function getName() {
console.log(5)
}
getName() // 4 函数声明优先级高于var声明, 故 4 覆盖了 5
console.log(a);// undefinde
var a= "hello world";
console.log(a);// "hello world"
f()
function f(){
console.log('hello world');// "hello world"
}
变量声明只提升声明 不提升赋值操作,函数声明 函数体整体被提升。
getName();
var getName = function(){
console.log("小明");
}
function getName(){
console.log("大明");
}
getName();
提升之后变成:
var getName;
function getName(){
console.log("大明");
}
getName();//”大明“
getName= function(){
console.log("小明");
}
getName();//"小明"
var getName = function(){ console.log(4) } function getName() { console.log(5) } getName() // 4 函数声明优先级高于var声明, 故 4 覆盖了 5
不是4的优先级是高于5, 而是5的优先级高于4,
5先声明, 但是后来它被4覆盖而已
先声明函数名,再声明 var 变量名,然后按顺序从上到下赋值。
var a = 1;
function a() { }
console.log(a); // 1
console.log(a);//undefined 变量a提升
var a = 10;
fn();//666 函数能在声明之前调用说明函数声明提升了
function fn() {
console.log('666')
}
console.log(a);//a会被提升到作用域最前面声明 var a = undefined
var a = 1;
console.log(a);
var a = 1;
// 变量和函数都会被提升 函数优先
function a() {
}
var getName = function(){ console.log(4) } function getName() { console.log(5) } getName() // 4 函数声明优先级高于var声明, 故 4 覆盖了 5
Most helpful comment
不是4的优先级是高于5, 而是5的优先级高于4,
5先声明, 但是后来它被4覆盖而已