Fe-interview: [js] 第63天 举例子说明javascript的变量声明提升和函数声明提升

Created on 17 Jun 2019  ·  7Comments  ·  Source: haizlin/fe-interview

第63天 举例子说明javascript的变量声明提升和函数声明提升

js

Most helpful comment

var getName = function(){
  console.log(4)
}

function getName() {
  console.log(5)
}

getName() // 4 函数声明优先级高于var声明,  故 4 覆盖了 5

不是4的优先级是高于5, 而是5的优先级高于4,
5先声明, 但是后来它被4覆盖而已

All 7 comments

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
Was this page helpful?
0 / 5 - 0 ratings