网站建设数据库是什么意思,网站做qq链接代码,科技文化网站建设方案,凡科网站免费版到了HTML5的时代#xff0c;对javaScript的要求不是降低了#xff0c;而是更提高了。javaScript语言的入门非常简单#xff0c;如果你有java、C#等C风格的结构化语言的基础#xff0c;那javaScript你最多半天就可以写点什么了。但是javaScript是一种动态语言#xff0c;这… 到了HTML5的时代对javaScript的要求不是降低了而是更提高了。javaScript语言的入门非常简单如果你有java、C#等C风格的结构化语言的基础那javaScript你最多半天就可以写点什么了。但是javaScript是一种动态语言这个特性决定了他在很多方面和java、C#等语言有极大的不同。很多人说只要会java、C#就可以在短时间内搞定javaScript估计一般都是吹牛来的用javaScript写点简单的应用没有问题如果要完全比较好的掌握那需要真正的理解javaScript的动态这个特性。 当你快速的了解的javaScript入门编程后在提高开发能力之前需要的是确保掌握javaScript的编程细节或者说特殊性。 而且和css在不同的浏览器中有兼容性问题一样javaScript在不同的浏览器和版本中也同样有不同的变化。 我认为javaScript入门之后向中级基于面向对象的编程发展之前有两个问题会对开发者有影响类型的动态和语法的灵活性。而这两点的集合是另很多入门级的javaScript人员造成各种诡异问题的核心。我这篇文章不讨论关于语法的基础关于核心对象的方法也不关心dom的处理这些内容在网上的任何javaScript教程中都有我们讨论一个些基于代码级别但容易写错的地方为你将来的高质量的javaScript奠定些好的基础。 我以下的内容是在IE7/8、Chrome14、FireFox10下进行测试。同时声明一个事情下面的内容的次序比较随意比javaScript还随意不是作为一步步的教程给零基础看的。需要你至少有些javaScript的代码经验了。 关于变量部分 在javaScript中变量使用var声明的变量是当前作用域的变量不使用var声明的则肯定是全局变量。 script typetext/javascript var x 10; //全局 y 100; //全局 function fun1() { var m 99; //局部 n 9; //全局 } alert(typeof this.x); //number alert(typeof this.y); //number alert(typeof this.m); //undefined alert(typeof this.n); //undefined fun1(); alert(typeof this.m); //undefined alert(typeof this.n); //number /script 以上代码说明当fun1被执行后函数内没有用var声明的n变量被注册为全局变量了。 下面的代码得到同样的执行效果 script typetext/javascript var x 10; //全局 y 100; //全局 function fun1() { var m 99; //局部 n 9; //全局 } alert(typeof window.x); //number alert(typeof window.y); //number alert(typeof window.m); //undefined alert(typeof window.n); //undefined fun1(); alert(typeof window.m); //undefined alert(typeof window.n); //number /script 那么我们可以明显的得到一个推理在全局里面window和this是同一个对象指向。 script typetext/javascript alert(this window); alert(this window); /script 那么下面的函数在其函数状态和对象状态时this的指向是不同的因为javaScript的动态的执行当其执行到的时候才去计算上下文情况。 script typetext/javascript function Fo1() { return this; } alert(Fo1()); alert(new Fo1()); /script 同样作为变量使用var声明的变量是不可以删除的没有使用var声明的变量是可以删除的 var x 10; //全局 y 100; //全局 function fun1() { var m 99; //局部 n 9; //全局 delete m; delete n; alert(typeof m); //number alert(typeof n); //undefined } delete x; delete y; alert(typeof x); //number alert(typeof y); //undefined fun1(); alert(typeof n); //undefined 在javaScript中声明变量非常的灵活但这个灵活性对控制全局和局部要有所注意。 function fun1() { var m n 10; //n是全局m是局部 var x, y 1, k 10; //xyk都是局部 } 而且有意思的是在通常的语言中我们对变量总是先定义后使用不过在javaScript中嘛……看以下代码 function fun1() { alert(typeof x); //undefined alert(typeof y); //undefined var x 10; alert(typeof x); //number } fun1(); 这样的结果对你来说是完全可以接受和预期的不过…… function fun1() { alert(x); //undefined alert(y); //提示y没有定义 var x 10; alert(x); //number } fun1(); 上面的现象很奇怪如果我们当真要用x和y的时候编译器却给予不同的对待认为x仅仅是没有定义认可已经声明了而y是真正的不存在。这说明在处理一个范围的变量的时候var无论你在哪里声明的总是一开始就进行分配了。对于非var定义的变量嘛就没有这样的待遇了必须等执行到才进行分配 pre namecode classhtmlfunction fun1() { alert(x); //提示x没有定义 alert(y); //提示y没有定义 x 10; alert(x); //number } fun1(); 更需要注意的是在函数内部声明的var变量并不局限在声明的代码语句块中看看以下代码 function fun1() { for (var i 0; i 10; i) { } alert(i); //10 } fun1(); 所以呢我们推荐在一个对象/函数的第一行就把所有的局部变量全部声明完毕 function fun1() { var value 1, arr [], obj {}, date new Date(), has false; } 注意变量之间用逗号隔离,这样的好处是明显的自己去考虑吧。 javaScript的语法很灵活语句后面可以不加;来表示结束这个时候编译器会讲硬回车作为语句的结束符合 function fun1() { var x 10 var y 9 return x y } alert(fun1()); //19 以上的代码写法我不知道有什么特别的好处如果是炫耀你知道可以不用;来结束语句那就到此为止吧。因为下面的代码会得到一个错误 function fun1() { return { Title: title, Style: style, Value: Value } } alert(typeof fun1()); 因为javaScript会再return后面加一个; 正确的做法是 function fun1() { return { Title: title, Style: style, Value: Value }; } alert(typeof fun1()); 我不好说这个原因一定是不写引起的但我想说明的是你要小心javaScript对随意代码的随意处理你总是应该让javaScript编译器知道你明确的要干嘛而不是由他去猜呀猜的。 本文转自shyleoking 51CTO博客原文链接:http://blog.51cto.com/shyleoking/803091