js基本語法介紹
1、js的六種資料型別
(1)Boolean(布林),取值:True,False
(2)Number(數字),取值:所有數字,包含整數小數等,範圍相當於double
(3)String(字串),取值:所有字串
(4)Undefined(未定義),取值:只有一個值undefined
(5)Null(空物件),取值:只有一個值Null
(6)Object(物件型別),取值:任何物件、array、function等等
上面6種資料型別,只有object是引用型別,其餘都是基本型別。
2、==與===
(1)相等運算子==與(!=)
對於等號兩邊的如果型別相同,則直接比較。如果型別不同的話,先試圖通過型別轉換為String、Number、Boolean這些相同的資料型別,然後再進行比較。
此外,==認為null與undefined,undefined與undefined,null與null是相等的。
(2)完全相等運算子===
===不進行型別轉換,表示式兩邊的資料型別必須相同,並且值也相同,這時才返回true。
注:switch語句判斷的時候是使用的===。
3、null與undefined
(1)null
null表示一個有意義的值,表示無值或者無物件,此時變數的狀態為已知狀態,即:null。可以通過設定物件名為null值,來釋放對物件的引用,以便於瀏覽器的垃圾回收機制可以回收記憶體。
(2)undefined
宣告變數未賦值時,變數的值為undefined
方法沒有return返回值的時候,返回undefined
未宣告變數,通過typeof來檢測變數時,返回undefined
訪問不存在的屬性的時候返回undefined
注:把null轉換為數字,為0,把undefined轉換為數字,為NaN。
4、js變數的作用域
(1)在js中不存在塊級元素,所以在方法內部宣告的變數在整個方法體的任意位置都可以訪問。
(2)當重複宣告一個變數的時候,js會忽略第二次宣告,但是會保留下第二次賦值。<span style="font-family:Microsoft YaHei;font-size:18px;">function f3() { var x = 10; if (x>5) { var y = 100; alert(y); } alert(y); } f3(); alert(y);</span>
(3)當宣告變數的時候沒有加var,js認為宣告的是一個全域性變數,在哪裡都可以使用。所以我們要避免使用這種形式的全域性變數。
5、js中的轉義符
\t,\n,\',\'',\\
6、函式預解析和變數預解析
(1)函式預解析
觀察下面的程式碼
<span style="font-family:Microsoft YaHei;font-size:18px;">var x = 1, y = 0, z = 0;
function add(n) { n = n + 1; return n; }
y = add(x);
function add(n) { n = n + 3; return n; }
z = add(x);
alert(y + '........' + z);</span>
執行結果是4........4。
這就是函式預解析的作用,上面的程式碼有兩個相同名稱的函式體,當執行的時候並不是按照從上到下依次執行下來,而是先進行函式預解析。遍歷程式碼把函式名都找出來,然後發現有兩個是一樣名稱的,系統會用最後一次的函式來覆蓋上面的函式。所以最後y執行的也是+3。
(2)變數預解析
觀察下面的程式碼首先進行變數預解析,所以函式內部執行第一句的時候已經知道存在user_name這個變數,但是僅僅是有這個變數,沒有賦值,所以結果是undefined。到了第二句進行賦值,所以結果變成bolun 。下面的alert就出了functions的作用域,所以採用的就是外部user_name變數的賦值,就是istari。
<span style="font-family:Microsoft YaHei;font-size:18px;">var user_name = 'istari';
function f1() {
alert(user_name);//undefined
var user_name = 'bolun';
alert(user_name);//bolun
}
f1();
alert(user_name);//istari</span>