標籤:
1、相容xhtml方法:
<script>//<![CDATA[ ... ...//]]></script>
2、文檔模式:
IE5.5引入,最初包含2種:混雜和標準模式;後IE又提出了准標準模式;文檔開始未聲明文件類型,瀏覽器預設會開啟混雜模式。
3、noscript標籤用以提示瀏覽器不支援指令碼。
4、文法:
4-1、區分大小寫:ECMAScript中的一切都是區分大小寫(如變數、函數名、操作符...)。
4-2、標識符:
第一個字元必須是字母、底線或美元符($);
其餘字元可以是字元、底線、美元符或數字;
(註:標識符的字母也可以包含擴充的ASCII或Unicode字母字元)
4-3、注釋:單行和多行(//或/**/).
4-4、strict 模式:ECMAScript5中引入了strict 模式的概念,通過在代碼塊的頂端加入 "use strict" 來啟動strict 模式。
4-5、語句:其由分好結尾,但可省略,則其由解譯器確定語句結尾。(註:個人理解加分好是一種好的編程習慣)
5、變數:ECMAScript的變數是鬆散類型的,可以儲存任何類型的資料。(使用 var 定義申明變數)。
注意:用 var 定義的變數將是其範圍中的局部變數;
不使用 var 定義的變數將會是全域變數(但不推薦這樣做),但在strict 模式下,這樣定義變數會報錯(ReferenceError);
6、資料類型:
5種基本類型(Undefined,Null,Boolean,Number,String)和一個Object(對象)類型。
可以使用typeof初步檢測資料類型。
Object.prototype.toString.call(null); // [object Null]typeof null; //object
6-1、Undefined類型:
其只有一個值,即undefined,定義未初始化的變數就是這個值。
使用typeof檢測 未定義的變數 和 定義但未初始化的變數 時,其結果都為undefined,但使用未定義的變數會報錯。
6-2、Null類型:
其也只有一個值,即null,從邏輯角度看,其值的表示是一個null 指標(這正是typeof檢測其實object的原因)。
實際上undefined值是派生自null值,所以
console.log(undefined == null); //trueconsole.log(undefined === null); //false
6-3、Boolean類型:
其值有2個:true和false(區分大小寫);
可以使用Boolean()來轉換其他類型的資料為Boolean的值,對應關係如:
類型 轉換為true 轉換為falseBoolean true falseString 任何非Null 字元串 Null 字元串Number 任何非零數字值 0或NaNObject 任何對象 nullUndefined undefined
6-4、Number類型:
其使用IEEE754格式來表示;數字字面量格式:十進位、八進位(第一位必須是零,在strict 模式下無效)、十六進位(前2位必須是0x(零));
6-4.1、浮點數:
其小數點前可以沒整數,但小數點後必須有;
其最高精確度是17位小數,所以其計算會有舍入誤差,如:
console.log(0.1+0.2==0.3); //false
6-4.2、數值範圍:
最大值(Number.MAX_VALUE)和最小值(Number.MIN_VALUE);正無窮(Infinity)和負無窮(-Infinity);
可以使用 isFinite() 函數檢測數值是否是有窮的,返回true表示介於最小和最大之間;
6-4.3、NaN:
即非數值(not a number)是一個特殊的數值;其包含2個特點:任何涉及NaN的操作返回都是NaN和其與任何(包括自己)不相等 console.log(NaN==NaN); //false ;
6-4.3、數值轉換:
有3個方法:Number()、parseInt()和parseFloat();第一個適合任何類型,後面2個轉換字串類型;
Number的規則: 1、Boolean類型的:true -> 1;false -> 0; 2、null -> 0; 3、undefined -> NaN; 4、字串類型的: 只包含數字(包括加號或減號),轉換為十進位數(會忽略前置字元為零); 有效浮點格式(會忽略前置字元為零); 有效十六進位格式(如0xf); Null 字元串 -> 0; 另外的都是 NaN; 5、對象的先valueOf,如果為NaN再使用toString;
parseInt()和parseFloat()則是儘可能的將字串轉化為數值(會忽略字串前面的空格,直到找到第一個非空白字元);
parseInt()在ECMAScript3和5中對八進位字面量的解析會有分歧
var num = parseInt("070"); //3中認為其是八進位,轉換為十進位就是56,5中則是0(八進位0的前置無效)
(註:parseFloat()會忽略前置字元為零)
為此parseInt()提供第二個參數指定轉換時的基數。
6-5、String類型:
其由零或多個16位Unicode字元組成;
其還包含了特殊的字元字面量,也叫逸出字元;
特點,其是不可變的;
類型轉換:toString()和String();
javascript第二遍基礎學習筆記(待續...)