发布于 2015-06-17 15:06:48 | 145 次阅读 | 评论: 0 | 来源: 网友投递
这里有新鲜出炉的Javascript教程,程序狗速度看过来!
JavaScript客户端脚本语言
Javascript 是一种由Netscape的LiveScript发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
主要理解以下四条
1,预编译
查找 var function
2.,逐行解析,表达式会改变预编译的值
3.作用域链
4.每次到一个新的作用域链重复一1,2两个过程;
例1
alert(a); //function fn2(){var a =10} ,预编译 var a =1; alert(a); //1;表达式改变a function fn1(){ var a = 11;} alert(a); //1; 函数块不会改变a的值 var a =2; alert(a); //2 表达式
例2
var a =1; function a(){alert(2)}; typeof a ; //"number",typeof返回值是String a(); //报错,因为此时a是number
例3
var a = 1; function fn1(){ alert(a); var a = 2; } fn1(); //undefined,调用fn1函数,又开始预编译,此时搜索到var关键字,a为undefined alert(a); //1 此时搜索全局变量下,a=1
例.4
var a = 1; function fn1(){ alert(a); a = 2; } fn1(); //1 调用fn1函数,预编译未发现关键字,通过作用域链搜索外部中的a alert(a) //2 由于fn1中 a赋值语句未使用var关键字,改变了全局变量a
例5
var a = 1; function fn1(a){ alert(a); a = 2; } fn1(); //undefined,由于传参a,其实意味着var a;预编译时发现关键字,声明了a alert(a)//1,由于fn1中var a,故在变量中a是局部变量
例6
var a = 1; function fn1(a){ alert(a); a = 2; } fn1(a); //1 alert(a) //1