作用域链2

1.函数内部的变量取代全局同名变量

var t = "pp";
function test() {
   //  函数内部的变量取代全局同名变量 
  //执行t的时候,它会先找作用域链对象,由于它定义在函数内部,
  //所以这个函数就是它的作用域链的第一个对象
  //而在这个对象里又有t的定义,所以t就是局部变量了,它替换了全局变量t
  //t只是此时有定义,但并没有赋值,赋值在下一行,所以这里输出了undefined
alert(t);
// var声明提前,定义了没有赋值,是undefined;没有定义的话就是报错;
var t = "aa";
alert(t);
}
test(); 

2.javascript 没有var的变量都为全局变量,且为window对象的属性

function test() {
//执行这个句的时候它会找作用域对象,这个函数就是作用域链中的第一个对象,
// 但这个对象中没有相关的var语句
// 于里就找作用域链的第二个对象,即全局对象,而全局对象中也没有相关的var语句
//由于没有相关的var语句,js隐式在函数地声明了变量即var all,就是代表全局变量;
 all = 30;
alert(all);
}
test();
alert(all);
// window是代表定义了,没有数据就会打印undefined,不会报错;
alert(window.all); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值