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)