1. 程式人生 > >JS學習之基本概念

JS學習之基本概念

一.區分大小寫
ECMAScript中的一切(變數、函式、操作符)都區分大小寫。這意味著。變數名test和變數名Test分別表示兩個不同的變數,而函式名不能使用typeof,因為它是一個關鍵字,但是typeOf則完全可以是一個有效的函式名
二.識別符號
所謂識別符號。就是指變數、函式、屬性的名字,或者函式的引數。識別符號可以是按照下列格式規則組合起來的一個或多個字元:
第一個字元必須是一個字元,下劃線(_)或一個美元符號($);
其他字元可以是字母,下劃線,美元符號或數字。
按照慣例,ECMASript標識符采用駝峰大小寫格式,也就是第一個字母小寫,剩下的每個單詞的首字母大寫,例如:firstSecond。
三.嚴格模式


嚴格模式是為JavaScript定義了一種不同的解析和執行模型。在嚴格模式下,ECMAScript3中的一些不確定的行為將得到處理,而且對某些不安全的操作也會丟擲錯誤。要在整個指令碼中啟用嚴格模式,可以在頂部新增如下程式碼:

"use strict";

這行程式碼看起來像是字串,而且也沒用賦值給任何變數,但其實它是一個編譯指示,用於告訴支援的JavaScript引擎切換到嚴格模式。這是為不破壞ECMAScript3語法而特意選定的語法。
在函式內部的上方包含條編譯指示,也可以指定函式再嚴格模式下執行:

function doSomething(){
     "user strict"
; //函式體 }

四.變數
ECMAScript的變數是鬆散型別的,所謂鬆散型別就是可以用來儲存任何型別的資料。換句話說,每個變數僅僅是用於儲存值的佔位符而已。定義變數時要使用var操作符(注意var是一個關鍵字),後跟變數名(即一個識別符號),如下所示:

var message;

這行程式碼定義了一個名為message的變數,該變數可以用來儲存任何值(像這樣未經過初始化的變數,會儲存一個特殊的值–undefined),在定義變數的同時就可以設定變數的值,如下所示:

var message="123";

變數message中儲存了一個字串“123”。像這樣初始化變數並不會把它標記為字串型別;初始化的過程就是給變數賦一個值那麼簡單。因此,可以在修改變數值的同時修改值的型別,如下所示:

var message="hi";
message=100;   //有效,但不推薦

在這個例子中,變數message一開始儲存了一個字串值”123”,然後改值又被一個數字值100取代。雖然我們不建議修改變數所儲存值的型別,但這種操作在ECMAScript中完全有效。
有一點必須注意,即用var操作符定義的變數將成為定義該變數的作用域中的區域性變數。也就是說,如果在函式中使用var定義一個變數,那麼這個變數在函式退出後就會被銷燬,例如:

function test(){
      var message="hi";    //區域性變數
}
test();
console.log(message);  //錯誤

這裡,變數message是在函式中使用var定義的。當函式被呼叫時,就會建立該變數併為其賦值。在此之後,這個變數又會立即被銷燬,因此例子中的下一行程式碼就會導致錯誤。不過,可以像下面這樣省略var操作符,從而建立一個全域性變數:

function test(){
    message="hi";    //全域性變數
    }
    test();
    console(message);

這個例子省略了var操作符,因而message就成了全域性變數。這樣,只要呼叫過一場test()函式,這個變數就有了定義。雖然省略var操作符可以定義全域性變數,但這也不是我們推薦的做法。因為在區域性作用域中定義的全域性變數很難維護,而且如果有意地忽略了var操作符,也會由於相應變數不會馬上就有定義而導致不必要的混亂
五.typeof操作符
由於ECMAScript是鬆散型別的,因此需要一種手段來檢測給定變數的資料型別–typeof就是負責提供這方面資訊的操作符。對一個值使用typeof操作符可能返回下列某個字串:
undefined ——-如果這個值未定義;
boolean———-如果這個值時布林值;
string————-如果這個值時字串;
number———如果這個值數值;
object———-如果這個值是物件或null;
function———如果這個值是函式
下面是幾個使用typeof操作符的例子:

var message="some string";
console.log(type message);
console.log(type (message));
console.log(typeof 95);

typeof是一個操作符而不是函式,因此例子中的圓括號儘管可以使用,但不是必須的。