一、js 中的變量、函數名和操做符都區分大小寫,
二、另一些像typeof這些關鍵字也不能使用
複製代碼
所謂標識符就是指變量、函數、屬性的名字,或者函數的參數。函數
標識符的寫法標準以下:
一、第一個字符必須是一個字母、下劃線或者一個美圓符號
二、其餘字符能夠是字母、下劃線、美圓符號或數字
三、標識符中的字母採用駝峯大小寫格式,例如:firstSecond、myCar
複製代碼
js的註釋包括單行註釋和塊級註釋,單行註釋兩個反斜槓開頭,塊級註釋則是以(/)開始以(/)結束學習
單行註釋
// 註釋
塊級註釋
/*
塊級註釋
*/
複製代碼
在js中語句是以分毫結尾可是不是必須的,可是推薦仍是寫上分號。由於這樣在壓縮代碼的時候就不會出現沒必要要的問題。測試
在js中有一些特定的關鍵字,這些關鍵字可用於表示控制語句的開始或結束,或者用於執行特定操做等,關鍵字是語言特意保留的,因此不能用做標識符。另外在js中還有另一些保留字,也是不能用來看成標識符。spa
由於js的變量是鬆散類型的,鬆散類型就是能夠用來保存任何類型的數據。每一個變量僅僅是用來保存值的佔位符而已,定義變量須要用到var,在以後的ES6中增長了let和const關鍵字來定義變量。設計
var a = 10 // 定義一個變量a 給它賦值 10
複製代碼
注意:雖然省略 var 操做符能夠定義全局變量,可是並不推薦這種作法,由於在局部做用域中定義全局變量會使得代碼很難維護。指針
在js中有5種基本數據類型:Undefined、Null、Boolean、Number和String,複雜類型 Object。Object是一組由無序的名值對組成的。在ES中不支持任何建立自定義類型的機制。code
用來檢測給定變量的數據類型,檢測的返回值以下:cdn
undefined -- 值未定義
Boolean -- 布爾值
string -- 字符串
number -- 數值
object -- 對象或者null
function -- 函數
複製代碼
typeof操做符的操做數能夠是變量,也能夠是數值字面量,typeof是一個操做符而不是函數。對象
它只有一個特殊類型的值即undefined,若是變量在var後沒有賦值,那麼這個變量的值就是 undefined。blog
var message;
message // undefined
複製代碼
注意:未初始化的變量和未賦值的變量 typeof以後都是undefined,因此爲了更好的判斷undefined的來源究竟是未賦值仍是未初始化,建議全部的值都聲明在使用。
null 是第二個只有一個值的數據類型,值爲 null,從表面看 null 表示的是一個空對象指針,而這個真是typeof 檢測 null 返回值爲 「object」的緣由。
若是你想定義一個變量用來保存對象,那麼最好的作法就是將變量賦值 null 這樣檢測 null 就知道 相應的變量是否保存了一個對象的引用。
注意:null == undefined 爲 true,儘管這樣二者的用途並不相同。不管任何狀況下都沒有必要將一個變量的值顯式的設置爲 undefined,而null則是若是保存對象的變量沒有真正保存對象,那麼就應該明確的讓變量保存null值。這樣能夠進一步的區分 null 和 undefined。
boolean類型有兩個字面值:ture 和 false,另外這兩個值和數字值不是一回事,ture 不必定等於1,false也不必定等於0.
注意:true 和 false 是區分大小寫的,True 和 Flase 只是標識符。
咱們能夠經過函數** Boolean()** 將一個值轉換爲Boolean類型。 以下:
var message = 'haha,nihao';
var zh = Boolean(message)
複製代碼
各類類型的轉換規則以下:
數據類型 | 轉換爲true的值 | 轉換爲false的值 |
---|---|---|
Boolean | true | false |
String | 任何非空字符串 | "" (空字符串) |
Number | 任何非零數字值(包括無窮大) | 0 和 NaN |
Object | 任何對象 | null |
Undefined | 不適用 | undefined |
在js中普遍使用的數據類型,有整數和浮點數值。能夠經過十進制、八進制、十六進制的字面來表示。
var bjz = 070 // 八進制 56
var sjz = 56 // 十進制 56
var sljz = 0xA // 十六進制 10
複製代碼
就是該數值中必須包含一個小數點,而且小數點後面至少有一位數字。
var f = 1.1
複製代碼
注意:因爲保存浮點數的內存空間是保存整數的兩倍,因此如下狀況會自動將浮點轉換爲整數保存,以下:
var f = 1. // 小數點後沒有數字 保存爲 1
var b = 10.0 // 保存爲 10
複製代碼
另外對於 過大 或者太小的值能夠經過 e(科學計數法)表示,以下:
var f = 3.125e7 // 3.125 * 10^7 => 31250000
var f = 3e-17 // js 會將小數點後面超過6個0的浮點數值轉換爲科學計數法
複製代碼
注意:0.1 + 0.2 != 0.3
js中因爲內存的限制並不能保存全部的數值,js可以表示的最小值爲 5e-324,最大值爲 1.7976931348623157e + 308。若是某次計算數值超過最大 就轉換爲Infinity,最小爲 -Infinity。若是出現這兩個值,那麼該值就不能在參與以後的運算了。
js 中的非數值,是一個特殊的值。主要是爲了防止拋出錯誤,用來表示一個原本返回數值的操做數未返回數值的狀況。
NaN 有兩個特定,一、任何涉及NaN的操做都會返回NaN,二、NaN與任何值都不相等包括其自己。針對這兩個特色,ES定義了isNaN() 函數,這個函數接受一個參數,該參數能夠是任何類型,而該函數會幫咱們肯定這個參數是否 「不是數值」,isNaN()接受參數以後會嘗試將這個值轉換爲數值,某些不是數值的值會直接轉爲數值。以下:
isNaN(NaN) // true
isNaN(10) // false (10是一個數值)
isNaN("10") // false (能夠被轉換成數值10)
isNaN('blue') // true (不能轉換成數值)
isNaN(true) // flase (能夠被轉換成數值 1)
複製代碼
注意:isNaN()也能夠用於對象,在基於對象調用的時候,首先會調用 valueOf()方法,而後肯定該方法的返回值是否能夠轉換爲數值,若是不能則基於這個返回值在調用 toString() 方法,在測試返回值。
有3個函數能夠把非數值轉換爲數值:Number()、parseInt()、parseFloat(),第一個函數能夠用於任何數據類型。另外兩個函數用於將字符串轉換爲數值。
Number()轉換規則以下:
Boolean值 => true or flase => 1 or 0
number => 傳入和返回
null => 返回 0
undefined => 返回null
字符串
若是包含十進制數值 則 '123' => 123 ,'012' => 12
若是是浮點字符串 則 '1.1' => 1.1 , '01.1' => 1.1
若是包含十六進制 則 '0xf' => 相同的十進制
若是爲空 則 '' => 0
若是包含除了上述格式 則 '' => NaN
若是是對象,則調用對象的 valueOf()方法,在按照以前的規則轉換返回值,
若是轉換對象是NaN,則調用對象的 toString() 方法,在按照以前的規則返回字符串
值。
parseInt()轉換規則以下:
它會忽略字符串前面的空格,若是第一個字符不是數字或者負號則返回NaN。
若是是其餘進制,則轉換爲響應的十進制數值。
var n = parseInt('1234blue') => 1234
var m = parseInt('') => NaN
parseFloat()轉換規則以下:
從第一個字符開始解析每一個字符,知道遇到第一個無效的浮點數字字符爲止
也就是說字符串中第一個小數點是有效的,第二個小數點就無效的了。所以
它後面的字符串就被忽略了。
var n = parseFloat('1234blue') => 1234
var m = parseFloat('0xA') => 0
var c = parseFloat('22.21.2') => 22.21
var b = parseFloat('22.4') => 22.4
複製代碼
用於表示由零或者多個16位 Unicode字符組成的字符序列,即字符串。由雙引號("")或者單引號 ('')包裹而成
var a = '124'
var b = "123"
// 注意:雙引號開頭必須雙引號結尾!
複製代碼
一些特殊的字符字面量,即轉義序列。用於表示非打印字符,或者具備其餘用途的字符。
字面量 | 含義 |
---|---|
\n | 換行 |
\t | 製表 |
\b | 空格 |
\r | 回車 |
\f | 進紙 |
\ | 斜槓 |
' | 單引號 |
" | 雙引號 |
這些字符能夠出如今字符串衝的任意位置,並且也會被看成一個字符來解析。
任何字符串的長度均可以經過 length 屬性來獲取。
let b = '1kljk'
b.length // 5
複製代碼
在 ES 中字符串是不可變的。字符串一旦被建立,它的值將不能被改變。若是要改變某個字符串的值則須要銷燬本來的值,在從新賦值
var lang = 'shanghai'
lang = lang + 'daxue'
// shanghaidaxue
複製代碼
若是想將一個值轉換爲字符串有兩種方法。1、經過toString(),以下:
var age = 11;
var agestring = age.toString() // '11'
var b = true
var bstring = b.toString() // 'true'
複製代碼
大多數數據類型(數值、布爾值、對象和字符串值)都有** toString**方法,可是 null 和 undefined 沒有。大多數狀況下 toString 是不須要傳遞參數的。默認是以十進制格式返回數值的字符串表示。可是實際上是能夠傳遞八進制、二進制、十六進制參數的。
var num = 10;
num.toString() // '10'
num.toString(2) // '1010'
num.toString(8) // '12'
num.toString(10) // '10'
num.toString(16) // 'a'
複製代碼
對象是一組數據和功能的集合。對象能夠經過執行 new 操做符後跟要建立的對象類型的名稱來建立。建立的object類型的實例,能夠爲其添加屬性和方法。
var o = new Object()
複製代碼
在ES中 Object類型是全部它的實例的基礎,Object類型所具備的任何屬性和方法也一樣存在於更具體的對象中。
constructor => 保存用於建立當前對象的函數
hasOwnProperty(propertyName)=> 用於檢查給定的屬性在當前對象實例中是否存在。propertyName必須以字符串形式指定。
isPrototypeOf(object) => 用於檢查傳入的對象是不是另外一個對象的原型。
propertyIsEnumerable(propertyName) => 用於檢查給的屬性是否可以使用 for-in語句來枚舉,與hasOwnProperty()方法同樣,做爲參數的屬性名必須以字符串指定。
toString() => 返回對象的字符串表示
valueOf() => 返回對象的字符串、數值或布爾值表示。·
歡迎關注個人公衆號 【小夭同窗】