1.第一题
来自雪狐老师的习题,我是搬运,老师别打我鸭
变量提升---当网页一打开,浏览器会先读一遍代码,浏览器会把带var和带function提前声明
1.如果是带var 浏览器会提前声明 var age 只声明 不赋值 默认的结果是undefined
2.变量提升 ,只提升等号左面的,不会提升等号右面的
3.如果是function 会声明+ 定义 会把整个function函数提升到代码前面
<script>
f();//3
function f() {
console.log("1");
}
f();//3
function f() {
console.log("2");
}
f();//3
function f() {
console.log("3");
}
</script>
2.第二题
<script>
console.log(a); // undefined
var a = 123;
console.log(a); // 123
function f1() {
console.log(a); // undefined
var a = 456;
console.log(a); //456
}
f1();
console.log(a); //123
</script>
3.第三题
<script>
console.log(a); // undefined
var a = 123;
console.log(a); // 123
var a = 456;
console.log(a); // 456
</script>
4.第四题
<script>
console.log(a); // 函数体
var a = 123;
console.log(a); // 123
function a() {}
console.log(a); // 123
function a() {}
console.log(a); // 123
</script>
5.第五题
<script>
console.log(a); //undefined
var a = 12;
function fn() {
console.log(a); // undefined
var a = 13;
}
fn();
console.log(a); // 12 找我们全局的
</script>
6.第六题
<script>
console.log(a); // undefined
var a = 12;
function fn() {
console.log(a); // 12
a = 13;//
}
fn();
console.log(a) //13
</script>
7.第七题
<script>
var foo = 1;
function bar() {
// 不管条件成立还是不成立都要进行变量提升
if (!foo) {
var foo = 10;
}
console.log(foo);
}
bar(); //10
</script>
8.第八题
<script>
var n = 13;
function fn(n) {//n 是形参
alert(n); // 13
var n = 14;
alert(n); //14
}
fn(n);//n是实参
console.log(n); // 13
</script>
9.第九题
<script>
console.log(a, b, c); // undefined undefined undefined
var a = 10,b = 20,c = 30;
function f(a) {//小心啊,仔细看,用到我们前面学习的内容
console.log(a, b, c); //10 undefined 30
var b = a = c = 100;
console.log(a, b, c); //100 100 100
}
f(10, 20);
console.log(a, b, c); // 10 20 100
</script>
10.第十题
<script>
console.log(num, str); // undefind undefind
var num = 18;
var str = "lily";
function fn2() {
console.log(str, num); //lily undefind
num = 19;
str = "candy";
var num = 14;
console.log(str, num); // candy 14
}
fn2();
console.log(str, num); // candy 18
</script>