var a = b = 1
隐式创建了全局变量b
var a=1;a定义的是一个局部变量
var a=b=1;定义a是一个局部变量,b是一个全局变量
var a=1,b=1;a、b定义的都是局部变量
var a = b = 1和var a=1, b=1的不同是,前面的那个语句会创建出来b这个全局变量
再次强调一下没有块级的定义域;只有函数的定义域
b隐式创建了全局的变量
var 隐式定义变量
function foo() {
var a = b = 1 //隐式的创建了一个全局变量b
}
foo()
console.log(typeof a) // 拿不到,a属于函数作用域中的
console.log(typeof b) // 'number' b为全局变量
块级作用域block
js中没有块级作用域,比如在for循环中定义一个变量在for循环外也能访问。
函数作用域
在函数中定义的变量在函数外无法访问
{
let a = 1, b = 1;
}
块级作用域外拿不到b //ReferenceError
{
let a = b = 1;
}
b变成块级作用域外的变量
JS没有块级作用域
var a = 1, b = 1;
没有块级作用域
vv程序东方似懂非懂
var a=b=1的特性
没有块作用域
block语句的注意事项
语句的分类
var a=b=1; //这样b会变成全局变量
{ } 没有块级作用域,for外面一样可以调用i
变量定义,连写的话,b 会成为全局变量,要分开写才不会出现这种情况
没有块级作用域
块语句fnw
javascript有函数作用域,但没有块作用域!
即for,if之类块语句中的局部变量在块结束以后依然存在,且值为最后赋予的值。
注意没有块级作用域,所以要注意var i 的使用
var a = b = 1;
b是全局变量
没有块级作用域
语句:
1.Statement:
块语句 块 block (没有块级的作用域)
申明语句 var
如果在函数内部定于var a=b=1;
a为局部变量,b为全局变量
在函数外能访问b
应该为 var a=1,b=1;
没有块级作用域