Javascript基础知识整理

1.ECMAScript有5中简单数据类型 Undefined,Null,Boolean,Number,String  一种复杂数据类型 Object

2.undefined 不是未定义,而是声明之后没有对其进行初始化(赋值)

3.基本类型的值无法添加属性,只能给引用类型的值添加。

4.typeof 用来检测基本数据类型 instanceof 则用来检测引用数据类型

5.数组:数组的length属性是可读写的,通过设置length可以从数组的末尾移动项或向数组中添加新项。

数组可以使用push方法(在数组尾部追加项并返回改后长度)和pop方法(删除尾部项,并返回该项) 模拟栈的数据结构。
也可以使用push+shift或unshift+pop实现队列数据结构
注:IE7及以下版本的unshift()方法返回undefined而不是新数组长度

 


6.变量、函数及函数表达式的声明

JS中的变量采用预声明的方式 即无论声明的位置在哪里,解析器会在进入该执行上下文的时候首先对其进行声明,并初始化为 undefined.

function xx(){
  a();
  b();
  var m = 1;
  if(false){
    var n = "s";
  }
}
实际效果
function xx(){
  var m,n;
  a();
  b();
  m = 1;
  if(false){
    n = "s";
  }
}

而对于函数,解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问);

至于函数表达式,则必须等到解析器执行到它所在的位置时,才会真正被解释执行。

虽然变量声明会提到执行上下文顶部,但如果声明之前就已经存在同名变量,则不会进行声明。如下

(function(a){
    console.log(a);
    var a = 1;//因为预声明之前 该变量名已存在,所以不会进行重新声明
})(2)

 

 

 


7.事件处理不要放在页面上,不利用页面维护,建议将这些处理函数都封装在单独的js文件里(如果你用的是Knockout.js或者MVVM的其他框架,那就另说了)


8.在JS中可以使用try-catch来处理异常,但在我看来单纯用于捕获预料之外的错误,如果开发者足够严谨的话,try-catch是没有必要的;并且用的话也绝对不要在catch里什么也不做!!否则的话页面上出问题的时候你根本不知道是哪里出了问题。

推荐方法:

  • 向用户简单的提示一些错误信息,如"您查找数据不存在"之类的。
  • 什么也不显示,但是要将真正的错误信息及发生地点存入一个变量或者隐藏控件。

9. Js文件的延迟加载。

因为Web页面的资源都需要从远程服务器获取,所以经常有网速慢而造成页面显示迟缓的问题。这主要就是因为文件的下载占用了页面显示的线程

解决方法有两种

1:将文件的加载放到DOM加载之后,即body的结束位置。

<html>
<body>
    <h1>Page is loading</h1>
    ......
    ......
    <script src = "xx.js"></script>
</body>
</html>

2:给script标签添加异步加载的属性

<script src="xx.js" defer async="true" ></script>

其中 defer是为了兼容IE的。


10.绝对路径(Web应用根目录)  : "/";例如

<script src="/Scripts/common.js"></script>

 

 

 

 

 

 

 

 

 

 

 

posted @ 2013-08-15 10:20  TiestoRay  阅读(315)  评论(0编辑  收藏  举报