全局变量:在全局作用域内定义的变量,在任何的作用域内都是有效的
生命周期:浏览器打开的时候开始,浏览器关闭的时候销毁
全局变量都是window对象下的属性,全局函数都是window对象下的方法
局部变量:只在当前的局部作用域内有效
生命周期:函数调用时开始,调用完成后销毁
1、在局部作用域内没有用var声明的变量
2、在局部作用域内没有用var声明的变量以分号分隔
3、在局部作用域内没有用var声明的变量以赋值号连接
先从当前的作用域内查找,如果有就返回,如果没有依次向上一级作用域内查找,直到全局作用域;如果全局作用域内还没有,就报错。
var num = 100
console.log(num) //100
if (1) {
console.log(num) //100
}
while (num > 99) {
console.log(num) //100
num--
}
var demo1 = function () {
console.log(num) //99
console.log('我是demo1')
}
demo1()
// 浏览器对象
console.log(window)
console.log(num) //99
console.log(window.num) //99
var str = 'javaSE'
console.log(window.str) //javaSE
window.demo1()
function demo2() {
var count_1 = 5
console.log(count_1) //5
console.log('我是demo2') //我是demo2
}
demo2()
console.log(count_1) //报错
function fn1() {
a = 1
var x = 10;y = 20;z = 30
var m = n = o = 22
}
fn1()
console.log(a) //1
console.log(y, z) //20 30
console.log(n, o) //22 22
// var age = 55
function funct_1() {
// var age = 66
function funct_2() {
// var age = 77
function funct_3() {
// var age = 88
console.log(age) //88 77 66 55 报错
}
funct_3()
}
funct_2()
}
funct_1()