摘要:標識符按以下規則組合第一個字符必須是一個字母,下劃線或一個美元符號。包含值的變量和尚未定義的變量是不一樣的,例子報錯然而,對未初始化的變量執行操作符會返回值,對未聲明的變量執行操作符統一也會返回值。
1. 語法 1.1 區分大小寫
變量、函數名和操作費都區分大小寫。
1.2 標識符標識符指變量、函數、屬性的名字,或者函數的參數。標識符按以下規則組合:
第一個字符必須是一個字母,下劃線(_)或一個美元符號($)。
其他字符可以是字母、下劃線、美元符號或者數字。
標識符采用駝峰大小寫格式,也就是第一個字母小寫,剩下的每個單詞首字母大寫,例如:
firstSecond1.3 注釋
myCar
doSomethingImportant
使用c風格的注釋
//單行注釋 /* 多 行 注 釋 */1.4 嚴格模式
在頂部添加如下代碼進入嚴格模式:
"use strict";
(此處不深究)
ECMAScript中的語句以一個分號結尾,如果省略了分號,那么由解析器確定語句的結尾。
雖然語句結尾的分號不是必須的,但我們建議任何時候都不要省略他。
加上分號可以避免很多錯誤(例如不完整的輸入),開發人員也可以放心地通過刪除多余的空格來壓縮ECMAScript代碼。加上分號也會在某些情況下增進代碼的性能,減輕解析器的負擔。
在條件控制語句中,即使代碼塊里只有一條語句也使用代碼塊。
if (test) //有效但容易出錯,不要使用 alert(test); if (test){ //推薦使用 alert(test); }2. 關鍵字和保留字
ECMA-262描述了一組具有特定用途的關鍵字,以及一組不能用作標識符的保留字。
3. 變量ECMAScript的變量是松散類型的,所謂松散類型就是可以用來保存任何類型的數據。換句話說,每個變量靜靜是一個用于保存值的占位符而已。使用var操作符定義變量(var是一個關鍵字),后跟變量名(即標識符)。
省略var操作符,可以在函數中創建全局變量:
function test(){ message = "hi"; //message為全局變量 } test(); alert(message);
可以使用一條語句定義多個變量
var message = "hi", found = false, age = 29;
由于ECMAScript是松散類型的,因而使用不同類型初始化變量的操作可以放在一條語句中完成。
4. 數據類型ECMAScript中有5中簡單數據類型(也稱為基本數據類型):Undefined,Null,Boolean,Number,String
還有一種復雜數據類型——Object,Object本質上是有一組無序的名值對組成的。
ECMAScript不支持任何創建自定義類型的機制,而所有值最終都將是上述6中數據類型之一。
ECMAScript具有動態性,因此沒有再定義其他數據類型的必要了。
對一個值使用typeof操作符可能返回下列某個字符串
"underfined"——如果這個值未定義
"boolean"——如果這個值是布爾值
"string"——如果這個值是字符串
"number"——如果這個值是數值
"object"——如果這個值是對象
"function"——如果這個值是函數
以下是幾個例子:
var message = "some string"; alert(typeof message); //string alert(typeof(message)); //string alert(typeof 95); //number
這幾個例子說明,typeof操作符的操作數可以是變量(message),也可以是數值字面量。注意,typeof是一個操作符而不是函數,因此例子中的圓括號盡管可以使用,但是不是必須的。
有些時候,typeof操作符會返回一些令人迷惑但是技術上卻正確的值。比如,調用typeof null會返回"object"。因為特殊值"null"被認為是一個空的對象引用。
從技術上講,函數在ECMAScript中是對象,不是一種數據類型。然而,函數也確實有一些特殊的屬性,因此通過typeof操作符來區分函數和其他對象是有必要的。4.2 Undefined類型
Undefined類型只有一個值,即特殊的Undefined。在使用var聲明變量但未對其加以初始化時,這個變量的值就是undefined,如:
var message; alert(message == undefined); //true
字面值undefined的主要目的是比較。
包含undefined值的變量和尚未定義的變量是不一樣的,例子:
var message; alert(message);//underfined alert(asnfoiasnfi);//報錯
然而,對未初始化的變量執行typeof操作符會返回undefined值,對未聲明的變量執行typeof操作符統一也會返回undefined值。
顯示地初始化變量是明智的選擇,這樣,當typeof操作符返回"undefined"值時,我們就知道該變量是沒有被聲明,而不是沒有初始化。4.3 Null類型
Null類型是第二個只有一個值的數據類型,這個特殊的值是null。從邏輯關系看,null值表示一個空對象指針,所以typeof操作符檢測null值會返回object。
如果定義的變量準備在將來用于保存對象,那么最好將該變量初始化為null而不是其他值。
這樣一來,只要檢測null值就可以知道相應的變量是否已經保存了一個對象的引用。
只要意在保存對象的變量還沒有真正保存對象,就應該明確地讓變量保存null值.
if (car != null){ //對car對象執行某些操作 }
undefined值是派生自null值的,因此ECMA-262規定對它們的相等性測試要返回true。
alert(null == undefined); //true4.4 Boolean類型
Boolean類型只有兩個字面值:true和false。這兩個值和數字值不是一回事,true不一定等于1,false不一定等于0。
ECMAScript中所有類型的值都有與這兩個Boolean值等價的值。調用轉型函數Boolean(),如:
var message = "Hello world!"; var messageAsBoolean = Boolean(message);
下表給出各種數據類型以及其對應的轉換規則。
數據類型 | 轉換為true的值 | 轉換為false的值 |
---|---|---|
Boolean | true | false |
String | 任何非空字符串 | " "(空字符串) |
Number | 任何非零數字值(包括無窮大) | 0和NaN |
Object | 任何對象 | null |
Undefined | undefined |
這對理解流控制語句(如if語句)自動執行相應的Boolean轉換非常重要:
var message = "Hello world!:; if (message){ //自動轉換 alert("Value is true"); }4.5 Number類型
Number類型使用IEEE754格式來表示整數和浮點數值。
八進制字面值的第一位必須是0,十六進制字面值的前兩位必須是0x,在進行算術計算時,所有八進制和十六進制表示的數值最終都將被轉換成十六進制。
var intNum = 55; //整數 var octalNum1 = 070; //八進制的56 var octalNum2 = 079; //無效的八進制,解析為79 var hexNum1 = 0xA; //十六進制的10 var hexNum2 = 0x1f; //十六進制的31
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107098.html
摘要:高程讀書筆記第三章語法中的一切變量函數名和操作符都區分大小寫。建議無論在任何情況下都指定基數函數與函數類似。返回對象的字符串數值或布爾值表示。 JS高程讀書筆記--第三章 語法 ECMAScript中的一切(變量、函數名和操作符)都區分大小寫。 不能把關鍵字、保留字、true、false和null用做標識符。 嚴格模式是為JavaScript定義了一種不同的解析與執行模型。在嚴格模式...
showImg(http://img3.douban.com/lpic/s8958650.jpg); 0x00 javascript組成 ECMAScript(-265)核心語言部分 DOM文檔對象模型(DOM1、2、3) BOM瀏覽器對象模型(提供與瀏覽器交互的接口和方法) 0x01 async 異步加載 執行順序不定 charset defer 延遲加載,立即下載腳本但不執行 src ...
摘要:的理解函數與其他語言函數最大的不同在于,其不介意傳入多少參數以及參數的類型比如函數的形參有兩個,但是調用函數傳入的參數可以寫一個,三個或不寫參數對應等,解析器都可以正常解析,這是因為中參數在內部是以一個數組形式來表示,故而不需要關系傳入參數 ECMAScript function的理解 ECMAScript 函數與其他語言函數最大的不同在于,其不介意傳入多少參數以及參數的類型...
摘要:元素,當瀏覽器不支持腳本數據結構有如下中基本數據結構操作符,用來檢測給定變量的數據類型結果都是,聲明沒初始化,使用生命變量但未對其進行初始化的,默認沒有進行聲明,傳遞給函數會導致一個錯誤,對于未聲明變量這么操作沒什么意義比如,也是返回。 javascript簡史 微軟IE和網景在瀏覽器上的競爭 ECMAScript,由ECMA-262定義,提供核心語言功能 `ECMA 歐洲計算機制...
摘要:與執行環境相關的變量對象中有執行環境定義的所有變量和函數作用域鏈代碼在一個環境中執行,便會創建變量對象的一個作用域鏈。 執行環境 執行環境是什么? javascript的解釋器每次開始執行一個函數時,都會為每個函數創建一個執行環境(execution context)。 執行環境定義了變量或者函數有權訪問的其他數據,決定了他們各自的行為。 與執行環境相關的變量對象(...
閱讀 766·2023-04-25 17:33
閱讀 3626·2021-07-29 14:49
閱讀 2480·2019-08-30 15:53
閱讀 3435·2019-08-29 16:27
閱讀 2000·2019-08-29 16:11
閱讀 1030·2019-08-29 14:17
閱讀 2432·2019-08-29 13:47
閱讀 2016·2019-08-29 13:28