1
;(function () {
var x = (y = 1)
})()
var z
console.log(y)
console.log(z)
console.log(x)1
undefined
报错
考点:
- 函数内声明的变量是局部变量
- 没有使用 var 声明的变量是一个全局变量
2
var a, b
;(function () {
console.log(a)
console.log(b)
var a = (b = 3)
console.log(a)
console.log(b)
})()
console.log(a)
console.log(b)undefined
undefined
3
3
undefined
3
考点:
- 没有使用 var 声明的变量是一个全局变量
3
var friendName = "World"
;(function () {
if (typeof friendName === "undefined") {
var friendName = "Jack"
console.log("Goodbye " + friendName)
} else {
console.log("Hello " + friendName)
}
})()Goodbye Jack
考点:
- 变量提升
4
function fn1() {
console.log("fn1")
}
var fn2
fn1()
fn2()
fn2 = function () {
console.log("fn2")
}
fn2()fn1
报错
fn2
考点
- 变量提升
5
function a() {
var temp = 10
function b() {
console.log(temp)
}
b()
}
a()
function a() {
var temp = 10
b()
}
function b() {
console.log(temp)
}
a()10
报错
6
var a = 3
function c() {
alert(a)
}
;(function () {
var a = 4
c()
})()3
7
function fun(n, o) {
console.log(o)
return {
fun: function (m) {
return fun(m, n)
},
}
}
var a = fun(0)
a.fun(1)
a.fun(2)
a.fun(3)
var b = fun(0).fun(1).fun(2).fun(3)
var c = fun(0).fun(1)
c.fun(2)
c.fun(3)undefined
0
0
0
undefined
0
1
2
undfined
0
1
1
8
f = function () {
return true
}
g = function () {
return false
}
;(function () {
if (g() && [] == ![]) {
f = function f() {
return false
}
function g() {
return true
}
}
})()
console.log(f())false