1.js 变量作用域
函数外面的,不管带不带var 都是全局变量。按照守则:函数外面的,建议都带上var
函数里面的,带var 的是局部变量,不带var 就会变成全局变量,
2.js 的作用域,属于方法级,不是块级。
function test(){
if(1==1) {
var xo=123;
}
else{
var ox=345;
}
console.log(xo,ox)
}
test(); //输出结果为:123,undefined
由此可以看出来,不管变量定义在哪儿,只要在函数里面,他就会作用到他以下的部分。而如果在java中,因java 是块级作用域,那么xo只能作用在if中。最终就不能输出xo的值。
3.js 是一门面向对象的语言,js对象说明:
window 是浏览器窗口对象。可以获取到浏览器窗口下的所有东西,如;window.close 关闭窗口/ window.open 打开新窗口/window.document /window.location.href 设置网站地址。
document 是html 之上的对象,window之下的对象。下有:document .html 、document .head、document .body 几大属性各自代表了html、head、body 三个标签。
document.write 往屏幕上写东西,放在那儿就 在html中那个位置输出。
documentElement 是html对象。
4.var obj =new Object()的解释
var obj =new Object();
obj.name="zzz";
obj.say=funciton(){
alert("dddd"+this.name);
}
alert(obj.name); //输出的是zzz
obj.say(); 输出的是:ddddzzz
new Object() 是js底层已经有的类。直接我们创建对象对象,然后就可以随便给这个对象创建属性。
注:this 是对象的意思。他代表的就是“.”前面的东西。
5.this的指向问题
this 不在于写的时候,指向的谁。而在于在运行的时候,谁在运行这个函数,this就指向谁。
var o={
name :"cj";
print:fuction(){
console.log(this.name);
}
};
o.print(); //输出cj
var ff=o.print();
ff(); // 输出undefined
window.ff();//输出undefined
this.name="ccc";
ff(); //输出ccc
从上面的例子看出:在定义o变量的时候,this按照逻辑上应该是指向o对象的。
当o的方法,被赋值给ff后,其实就是ff对象有了一个和o对象中一样的属性print。
根据this指向的是"."前面的东西。那么当调用ff() 方法的时候,this 指向了ff() 对象前面的东西。ff()前面的东西就是window 。根据js的对象结构。我们知道window是最顶层的对象。
所以,this此时指的是window。
浙公网安备 33010602011771号