var foo = function(x,y){
return x-y
}
function foo(x,y){
return x+y
}
var num = foo(1,2)
console.log(num)
结果:-1
js解析规则:
- 函数声明和变量声明都会被提升。函数会首先被提升,然后才是变量
- 函数声明优先级高于var声明,同个变量名后面的会覆盖前面的
- 函数表达式不会提升
因此以上规则会被解析为:
function foo(x,y){
return x+y
}
var foo
var num
foo = function(x,y){
return x-y
}
num= foo(1,2)