代码拉取完成,页面将自动刷新
同步操作将从 shuiruohanyu/web-interview 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
1.变量提升
// 1
console.log(tt);
tt = "dd";
console.log(tt);
// 变量提升之后的代码:
var tt;
console.log(tt); //undefined
tt = "dd";
console.log(tt); //'dd'
// 2
if (!a) {
var a = 2;
}
console.log(a);
// 变量提升之后的代码:
var a; //undefined
if (!a) {
//true
a = 2;
}
console.log(a); //2
2.函数提升
// 1
if (false) {
function fn() {
console.log(1);
}
}
console.log(fn);
fn();
// 变量提升之后的代码:
var fn; //undefined
if (false) {
function fn() {
console.log(1);
}
}
console.log(fn); //undefined
fn(); // fn is not a function
// 2
function fn() {
foo();
return;
function foo() {}
}
fn();
// 变量提升之后的代码:
function fn() {
function foo() {}
foo(); // 没有输出也不会报一个错误,因为foo是一个函数
return;
}
fn();
// 3
function bar() {
console.log(foo);
return;
var foo = function() {};
}
bar();
// 变量提升之后的代码:
function bar() {
var foo;
console.log(foo); // undefined
return; // 函数return之后的代码依旧会发生变量提升
foo = function() {};
}
bar();
// 4
console.log(f1);
console.log(f2);
function f1() {}
var f2 = function() {};
// 变量提升之后的代码:
function f1() {} // 函数提升,整个代码块提升到文件的最开始
var f2;
console.log(f1); // function f1() {}
console.log(f2); // undefined
f2 = function() {};
3.函数和变量同时提升
// 1
console.log(fn);
var fn = function() {
console.log(1);
};
console.log(fn);
function fn() {
console.log(2);
}
console.log(fn);
// 变量提升之后的代码:
var fn;
function fn() {
console.log(2);
}
console.log(fn); // 2
fn = function() {
console.log(1);
};
console.log(fn); // 1
console.log(fn); // 1
// 2
console.log(f1());
console.log(f2);
function f1() {
console.log("aa");
}
var f2 = function() {};
// 变量提升之后的代码:
var f2
function f1() {
console.log("aa"); // "aa"
}
f2 = function() {};
console.log(f1()); // undefined
console.log(f2); // ƒ () {}
// 3
(function() {
console.log(a);
a = "aaa";
var a = "bbb";
console.log(a);
})();
// 变量提升之后的代码:
// 4
console.log(a);
var a = 1;
console.log(a);
function a() {}
console.log(a);
// 变量提升之后的代码: 函数的提升后的位置是在变量提升后的位置之后的
var a;
function a() {}
console.log(a); // a()
a = 1;
console.log(a); // 1
console.log(a); // 1
// 5
console.log(a);
var a = 1;
console.log(a);
function a() {}
console.log(a);
console.log(b);
var b = 2;
console.log(b);
function b() {}
console.log(b);
// 变量提升之后的代码:
var a;
var b;
function a() {}
function b() {}
console.log(a); // a()
a = 1;
console.log(a); // 1
console.log(a); // 1
console.log(b); // b()
b = 2;
console.log(b); // 2
console.log(b); // 2
// 6
console.log(a);
console.log(b); // 报错 隐式全局变量不会提升
b = "aaa";
var a = "bbb";
console.log(a);
console.log(b);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。