JS基础知识第一弹

来源:互联网 发布:修改apk软件工具 编辑:程序博客网 时间:2024/04/29 13:12

JS基础知识第一弹

 (2012-03-11 13:12:16)
标签: 

javascript

 

web

 

css

 

html

 

it

分类: 学习

近来写js代码时,越发的发觉自己的基础知识不牢固。于是开始自我补习。摘录部分学习内容如下:

0、包含在<script>元素内部的js代码将被从上到下依次解释,在解释器对<script>元素内部所有代码求值完毕之前,页面中的其余内容都不会被浏览器加载或显示。

1、<script>标签内的js代码中不要出现"</script>"字符串,浏览器会认为那是结束标签。如果非要加入这个字符串,可以分开写:
alert( "</scr" + "ipt>" );

2、外部js文件都带有.js扩展名,但这个扩展名不是必需的,因为浏览器不会检查包含js的文件的扩展名,这样一来,使用jsp、php或其他服务器端语言动态生成的js代码也就成为了可能。

3、通过<script>元素的src属性,还可以包含来自外部域的js文件。src属性可以指向当前HTML页面所在域之外的某个域中的URL,例如:
<script src="http://www.somewhere.com/somejs.js"></script>
在包含外部域的js代码时,必须要考虑安全问题!!

4、关于<script>元素的位置,当放在<head>元素中时,意味着必须等到全部js代码都被下载、解析和执行完成之后,才能开始呈现页面的内容,对于js代码很多的页面来说,会导致浏览器在呈现页面的时候出现明显的延迟,延迟的时候窗口中将是一片空白。因此现代web应用程序一般都把js引用放在<body>元素中,放在页面内容的后面。例如:
<html>
  <head>
    <title>page title</title>
  </head>
  <body>
    <!-- here is the content -->
    <script src="myjs.js"></script>
    <script src="myotherjs.js"></script>
  </body>
</html>
这样在解析js代码之前,页面已经加载到浏览器窗口中了,用户不会等待太久而感觉页面打开速度太慢。

5、在XHTML中代码的编写规则比HTML严格的多。例如出现if(a < b)类似的代码,其中的小于号 < 会被认为是一个新标记的开始,从而导致语法错误。避免的方法:
一是使用&lt;代替小于号;
二是使用<script> //<![CDATA[ ... ... CODE ... ... ]]> </script>
需要注意的是,HTML文件和XHTML文件包含外部js文件的语法是相同的,对于外部js文件,不需要考虑上述问题。

6、ECMAScript的全部关键字:
break\case\catch\continue\default\delete\do\else\finally\for\function\if\in\instanceof\
new\return\switch\this\throw\try\typeof\var\void\while\with
保留字:
abstract\boolean\byte\char\class\const\debugger\double\enum\export\extends\final\ float\goto\implements\import\int\interface\long\native\package\private\protected\ public\short\static\super\synchronized\throws\thansient\volatile

若在代码中使用了关键字作为标识符,容易导致“Identifier Expected”(缺少标识符)。

7、在function中var一个变量,那么在这个function退出后这个变量会被销毁。

8、ECMAScript中的5种简单数据类型(也称为基本数据类型):

undefined,null,boolean,number,string。

还有一种复杂数据类型Object。Object本质是由一组无序的明值对组成。ECMAScript不支持任何创建自定义类型的机制。所有值最终都是上述六种数据类型之一。

9、typeof是用来检测变量的数据类型。使用typeof可能返回下列字符串中的某一个:
如果被检测的值未定义,则返回“undefined”;
如果被检测的值是布尔型,则返回“boolean”;
如果被检测的值是字符串,则返回“string”;
如果被检测的值是数值,则返回“number”;
如果被检测的值是对象或null,则返回“object”;
如果被检测的值是函数,则返回“function”;

注意:typeof是一个操作数而不是函数,因此括号不是必须的:

typeof myMsg;typeof(myMsg);都可以。


注意:严格说,函数在ECMAScript中是对象,不是一种数据类型,但通过typeof来区分函数和其他对象是有必要的。

注意:对于尚未声明(var)的变量,只能用typeof检测其数据类型,其他操作(例如alert等)都会报错。

注意:声明但未被初始化的变量,和未声明的变量,在进行typeof时都返回“undefined”。

10、null值表示一个空对象指针。因此typeof返回的是“object”。如果定义的变量准备在将来用作保存对象,那么最好将该变量初始化为null而不是其他值。这样只要检查null值就可以知道这个变量是否已经保存了一个对象的引用了。例如
if( car != null){ //对car对象进行操作 }

实际上,undefined值是派生自null值的,因此他们的相等性检测会返回true:

alert(null == undefined);  //返回true

11、undefined和null在用途上的区别:
对于undefined,没有必要把变量显式的设为undefined;
而对于null,在将保存对象的变量还未真正保存对象时可以让变量先保存null值。

0 0