第三章 基本概念
3.1 語法
3.1.1 區(qū)分大小寫
-
變量名test和Test完全不同
3.1.2 標識符:變量、函數(shù)、屬性的名字,或者函數(shù)的參數(shù)
-
命名規(guī)則
-
第一個字符必須是一個字母、下劃線、或者美元符號$
-
其他字符可以是字母、下劃線、美元符號、數(shù)字
-
采用駝峰大小寫格式:第一個字母小寫,剩下每個單詞首字母大寫。
-
for example:myName、herAge。
-
駝峰式命名雖不是強制要求,但可以視為一種最佳實踐。
3.1.3 注釋
包括單行注釋和塊級注釋。
-
單行注釋:以兩個斜杠開頭。如下所示:
// alert(“HelloWorld!”)
-
塊級注釋:以一個斜杠和一個星號(/*)開頭,以一個星號和一個斜杠結(jié)尾。如下所示:
/*
這是一個
多行的
塊級注釋
*/
3.1.4 嚴格模式
-
定義:為JavaScript定義的一種不同的解析與執(zhí)行模型。
-
使用方法:
-
在整個腳本中啟用嚴格模式,可以在頂部添加代碼
“use strict”;
。
-
也可以在函數(shù)內(nèi)部的上方包含這條編譯指示。
-
使用效果:嚴格模式下,ECMAScript3中的一些不確定行為會得到處理,而且對某些不安全的操作也會拋出錯誤。嚴格模式下,js的執(zhí)行效果會有很大不同。
3.1.5 語句
-
ECMAScript中的語句以一個分號結(jié)尾,但非必需。
-
若省略分號,則由解析器確定語句的結(jié)尾。
-
建議不要省略分號,因為寫上解析器就不必要再花時間推測應(yīng)該在哪里插入分號了。
3.2 關(guān)鍵字和保留字
ECMA-262描述了一組具有特定用途的關(guān)鍵字和一組不能用做標識符的保留字。
-
關(guān)鍵字:可以用于表示控制語句的開始或結(jié)束、或用于執(zhí)行特定操作等。
-
保留字:保留字雖然在這門語言中還沒有特定的用途,但他們有可能在將來被用作關(guān)鍵字。
3.3 變量
-
ECMAScript的變量是松散類型,即可以用來保存任何類型的數(shù)據(jù)。
-
定義變量時要用var操作符,后跟變量名,例如
var message
,當(dāng)然了,也可以直接在定義的時候?qū)ψ兞孔鲆粋€初始化,例如var message = ‘hi’ ;
-
這段的意思是變量message中保存了一個字符串“hi”。像這樣初始化變量并不會把它標記為字符串類型,初始化的過程就只是給變量賦了一個值。
-
因此,劃重點,可以在修改變量的同時修改值的類型。例如:
var message = ‘hi’ ;
message = 100 ; //有效,但不推薦
//這個例子代表變量message一開始保存了一個字符串“hi”,然后該值又被一個數(shù)字值100取代了。
-
有一點需要注意,用var操作符定義的變量將成為該變量的作用域中的局部變量。也就是說如果在函數(shù)中使用var定義一個變量,那么這個變量在函數(shù)退出后就會被銷毀。例如:
function test(){
var message = ‘hi’ ; //局部變量
} ;
test();
alert(message); //錯誤
//為什么是錯誤?
//這里,變量message是在函數(shù)里用var定義的,當(dāng)函數(shù)被調(diào)用時,就會創(chuàng)建該變量并為其賦值。而在此之后,這個變量會立即被銷毀。所以在執(zhí)行alerat()那行代碼的時候message已經(jīng)被銷毀了,因此報錯。
那么,該怎么解決呢?
-
在函數(shù)內(nèi)部省略掉var操作符,就可以創(chuàng)建一個全局變量,例子:
function test(){
message = ‘hi’ ; //局部變量
} ;
test();
alert(message); // hi
//在函數(shù)內(nèi)部不用var會創(chuàng)建全局變量。
//但我們并不提倡這種做法,因為局部作用域中定義的全局變量很難去維護。
//所以我們應(yīng)該選擇在開始就定義好所有的變量。