一、数据的作用域:
-
JS 有两种作用域:全局作用域和函数作用域
-
内部的作用域能访问外部,反之不行。访问时从内向外依次查找。
-
如果在内部的作用域中访问了外部,则会产生闭包。
-
内部作用域能访问的外部,取决于函数定义的位置,和调用无关
-
-
作用域内定义的变量、函数声明会提升到作用域顶部
面试题:
// 下面的代码输出什么
// 下面的代码输出什么
console.log(a, b, c);
var a = 1;
var b = function () {};
function c() {}
输出 undefined undefined [Function: c]
// 下面的代码输出什么
var a = 1,
b = 2;
function m1() {
console.log(a);
var a = 3;
function m2() {
console.log(a, b);
}
m2();
}
m1();
输出
undefined
3 2
// 下面的代码输出什么?(百度)
var a = 1;
function m1() {
a++;
}
function m2() {
var a = 2;
m1();
console.log(a);
}
m2();
console.log(a);
输出