题目
var a = 1;
var b = function a(x) {
x && a(–x);
};
console.log(a);
console.log(b);
控制台的打印结果是什么?
答案:
1
function a(x) {
x && a(–x);
}
JS中变量会预解析,所谓的预解析就是:在当前作用域中,JavaScript代码执行之前,浏览器首先会默认的把所有带var和function声明的变量进行提前的声明或者定义。
函数声明的优先级高于变量声明。
题中代码,其实引擎是这样读取的:
var a;
var b;
a = 1;
b = function a(x) {
x && a(–x);
};
console.log(a);
console.log(b);
(1)声明一个变量a。
(2)声明一个变量b。
(3) 给变量a赋值1。
(4)给变量b赋值一个命名函数a。
感谢阅读~~~
dvdf
始发于微信公众号: 前端麻辣烫