javascript - 一个用表达式声明的函数和同名的用函数声明声明的函数 总是执行表达式
怪我咯
怪我咯 2017-04-11 12:11:48
0
4
640

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

function getName () {console.log(4)};
var getName = function (){console.log(3)};
getName() //依旧是3

怪我咯
怪我咯

走同样的路,发现不同的人生

reply all(4)
大家讲道理
var getName = function () {console.log(3)}; //[1]
function getName (){console.log(4)};//[2]
getName()//3 [3]

function getName () {console.log(4)}; //[4]
var getName = function (){console.log(3)}; //[5]
getName() //依旧是3 [6]

==>

function getName (){console.log(4)};//[2]
function getName () {console.log(4)}; //[4]
var getName;//[1]
getName = function () {console.log(3)}; //[1]
getName();//3[3]
//var getName = function (){console.log(3)}; //[5] getName已经声明,var getName;被忽略
getName = function (){console.log(5)};//[5]
getName() //依旧是3 [6]

同名的变量名只申明一次,
变量声明和函数申明都会前提,但是函数申明比变量申明还要提前

左手右手慢动作

声明提升,函数声明提升优先级高于变量声明,所以你这俩例子都是先走的函数声明,再走的表达式

阿神

因为function声明的优先级比var声明的优先级高

刘奇

声明函数会进行提升,函数表达式却不会.

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template