筆記3-javascript基本概念

一.語法

1.1 ECMAScript中的一切(變量、函數名和操作符)都區分大小寫。

1.2 標識符:指變量、函數、屬性的名字,或者函數的參數。ECMAScript標識符采用駝峯大小寫格式,也就是第一個字母小寫,剩下的每個單詞的首字母大寫

1.3 嚴格模式:爲JavaScript定義了一種不同的解析與執行模型。在嚴格模式下,ECMAScript3中的一些不確定行爲將得到處理,而且對某些不安全的操作會拋出錯誤。

在整個腳本文件中啓用嚴格模式,可以在頂部添加如下代碼:
“use strict”;
這行代碼看起來像字符串,而且也沒有賦值給任何變量,但其實它是一個編譯指示(pragma),用於告訴支持的JavaScript引擎切換到嚴格模式。

二.變量

ECMAScript的變量是鬆散類型的。所謂鬆散類型就是可以用來保存任何類型的數據。換句話說,每個變量僅僅是一個用於保存值的佔位符而已。

var message;
這行代碼定義了一個名爲message的變量,該變量可以用來保存任何值(像這樣未經過初始化的變量,會保存一個特殊的值——underfined)。ECMAScript也支持直接初始化變量:
var message=“hello world”
像這樣初始化變量並不會把它標記爲字符串類型,初始化的過程就是給變量賦值那麼簡單。
注:給未經申明的變量賦值在嚴格模式下會導致拋出ReferenceError錯誤。

三.數據類型

3.1 typeof操作符:檢測給定變量的數據類型
typeof的操作數可以是變量:typeof(message)也可以是數值字面量:typeof(98);
typeof是一個操作符而不是一個函數,因此typeof()中的()可以使用但不是必須的。

注:
調用typeof null會返回object,因爲特:殊值null會被認爲是一個空的對象引用。
從技術角度講,函數在ECMAScript中是對象,不是一種數據類型。然而函數也確實有一些特殊的屬性。因此通過typeof操作符來區分函數和其他對象是有必要的。

3.2 Underfined類型
underfined類型只有一個值,即特殊的underfined。在使用var申明變量但未對其進行初始化時,這個變量的值就是underfined,例如:
var message;
此時message的值爲underfined
注:
字面值underfined的主要目的是用於比較,而ECMS-262第3版中並沒有規定這個值,第3版引入這個值是爲了正式區分空對象指針與未經初始化的變量。

對未初始化和未聲明的變量執行typeof操作符都返回了underfined值

3.3 Null類型
null是第二個只有一個值的數據類型,這個特殊的值是null
從邏輯角度來看,null值表示一個空對象指針
實際上underfined值是派生自null值的,因此ECMS-262規定他們的相等性測試要返回true:
alert(null == underfined); //true
這裏null和underfined之間的操作符“==”總是返回true,不過要注意的是,這個操作符處於比較的目的會轉換爲其操作數。
注意:
只要意在保存對象的變量還沒有真正保存對象,就應該明確地讓該變量保存null值。這樣做不僅可以體現null作爲空對象指針的慣例,而且也有助於進一步區分null和underfined

3.4 Number類型
3.4.1 浮點數值
如果小數點後面沒有跟任何數字,那麼這個數值就可以作爲整數值來保存。
如果浮點數值本身表示的就是一個整數(如1.0),那麼該值也會被轉換爲整數
var floatNum1=1. ; //小數點後面沒有數字,解析爲1
varfloatNum2=10.0; //整數——解析爲10

數值範圍問題:
如果某次計算的結果得到了一個超出JavaScript數值範圍的值,那麼這個數值將自動被轉換成特殊的Infinity值
要想確定一個數值是不是有窮的,可以使用isFinite()函數。這個函數在參數位於最小與最大數值之間時會返回true
Number.MIN_VALUE:表示最小數值
Number.MAX_VALUE:表示最大數值

3.5 NAN
NAN用於表示一個本來要返回數值的操作數未返回數值的情況
在ECMAScript中任何數值除以非數值會返回NAN
兩大特點:

  • 任何涉及NAN的操作(例如 NaN/10)都會返回NAN
  • NaN與任何值都不相等,包括NaN本身
    任何不能被轉換爲數值的值都會導致這個函數返回true:
    alert(isNaN(NaN)) //true
    alert(isNaN(10)) //false(10是一個整數)
    alert(isNaN(“blue”)) //true(不能被轉換爲數值)

數值轉換:
parseFloat()只解析十進制值,始終都忽略前導0

3.6 String類型
字符串的特點:字符串的長度是不可變的,也就是說,字符串一旦創建,他們的值就不能改變。要改變某個變量保存的字符串,首先要銷燬原來的字符串,然後再用另一個包含新值的字符串填充該變量:
var lang=“Java”;
lang=lang+“Script”;
以上失利中的變量lang開始時包含字符串"Java”。而第二行代碼把lang的值重新定義爲“JavaScript”。實現這個操作的過程如下:
首先創建一個能容納10個字符“”的新字符串,然後在這個字符串中填充“Java”和"script
”,最後一步是銷燬原來的字符串“Java”和字符串“Script”,因爲這兩個字符串已經沒有用了。
注:
每個字符串(數值、布爾值、字符串值)都有一個toString()方法,該方法返回字符串的一個副本,但null和underfined沒有toString()方法

3.7 Object類型
ECMAScript中的對象其實就是一組數據和功能的集合
Object類型所具有的任何屬性和方法也同樣存在於更具體的對象中
在ECMAScript中object是所有對象的基礎

發佈了33 篇原創文章 · 獲贊 2 · 訪問量 3525
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章