標識符
標識符定義
定義: 標識符是指變量、函數、屬性的名字,或者函數的參數
- 區分大小寫
- 必須以字母 或$或_開頭
變量提升
js的工作引擎的工作方式:先解析代碼,獲取所有被聲明的變量,然后一步步的運行。這就讓所有的變量聲明語句,都會被提升到代碼的頭部,這就是變量提升。
變量提升的例子
console.log(b) //undefined
var b=2
等價于
var b
console.log(b)
b=2
數據類型
- null(空缺)
- undefined(未定義)
- Number(數字類型)
- String(字符串類型)
- Boolean(布爾類型)
- Object(對象)
基本數據類型
基本數據類型
- Number(數字類型)
- String(字符串類型)
- Boolean(布爾類型)
Number
js的數字類型和其他語言不一樣,沒有整型和浮點型的區別,統一都是Number類型
var a=10 //十進制
var b=o73 //八進制
var c=ox44 //十六進制
Number中的浮點數
浮點數:浮點數是指數字包含小數點,小數點后至少有一位數字(沒有或者是0會轉為整數),前面可以沒有。
var a= 0.75;
var b=.5;
雖然浮點數的最高精度是17位,但是真正計算的時候精度不如整數
1-0.9 //0.09999999999999998
0.1+0.2 //0.30000000000000004
數字范圍
Number不能表示所有數字,有個范圍
- Number.MIN_VALUE: 5e-324
- Number.MAX_VALUE: 1.7976931348623157e+308
超過最值會被轉換為Infinity(無窮大),-Infinity(負無窮大)
判定無窮
可以通過isFinite()方法判斷。超過返回true,沒有返回false
isFinite(Number.MAX_VALUE + 1); // true
isFinite(Infinity); // false
isFinite(NaN); // false
isFinite(-Infinity); // false
isFinite(0); // true
isFinite(2e64); // true
isFinite("0"); // true
Boolean(布爾型)
布爾值代表“真”,“假”二中狀態,“真”用關鍵字“true”,"假"用關鍵字false
下列運算符會返回布爾值
- 二元邏輯運算符: &&(And),||(Or)
- 前置邏輯運算符: !(Not)
- 相等運算符: ===,!==,==,!=
- 比較運算符: >,<=,<,<=
下列值是false,其余都是true
- false
- ""
- null
- undifined
- NaN
- 0
String類型
數據用雙引號和單引號包裹起來的形式,俗稱字符串類型。
獲取字符串的長度可以用自帶的length屬性。從1開始
var a=''hhh'
a.length //3
字符串類型自帶的方法
- indexOf()獲取元素位置,里面是字符串,沒有則返回-1。檢索從0開始。
' abc'.indexOf('b') //1
- toUpperCase()轉換為大寫,toLowerCase()轉換為小寫 (原來的還是沒有改變)
'abc'.toUpperCase() //ABC
'ABC'.toLowerCase() //abc
數組和字符串之間的轉換
- 字符串的split()方法可以把字符串轉換成數組。默認用‘,‘’隔開 (原來的還是沒有改變)
'ab,c'.split("") //['a','b',',','c']
'abc'.split() //['abc']
'abcdf'.split('c') //['ab','df']
- 數組的join()方法可以把數組轉換新的字符串,默認用','連接 (原來的還是沒有改變)
['a','b','c','d'].join() //'a,b,c,d'
['a','b','c','d'].join('') //'abcd' 用空的連接
獲取字符串中的片段
- substr(start,lenght)方法 檢索從0開始,返回新的字符串
'abcdef'.substr(2,3) //'cde'
- substring(start,end)方法,檢索從0開始,返回新的字符串,不包括end,長度為end-start
'abcdef'.substring(2,3) //'c'
引用類型
Object(對象)又叫引用類型,包括三種。
- 普通對象
- 數組
- 函數
函數:是一種特殊的對象,我們可以通過構成函數生成普通對象。
null和undefined的區別
null的用法和知識
null: 表示空,通常表示先占有一個內存,便于分配給后面元素。
典型用法:
- 作為函數的參數,表示該函數的參數是一個沒有任何內容的對象。
- 作為對象原型鏈的終點。
undefined的用法
undifined: 表示不存在的值,表示已經分配存放空間,但是沒有任何值。
典型用法:
- 變量被聲明了,但是沒有賦值時,就等于undefined。
- 調用函數時,應該提供的參數沒有提供,該參數就等于undefined
- 對象沒有賦值的屬性,該屬性的值為undefined
- 函數沒有返回值時,默認返回undefined
用法區別
- typeof運算符的值不一樣
typeof(undefined) //undefined
typeof(null) //object
- Number()方法的值不一樣
Number(undefined) //NaN
Number(null) // 0
undefined == null //true
typeof運算符的用法
定義
typeof運算符可以返回一個值的數據類型,返回的是字符串
typeof 5 //'number'
typeof 'adc' //' string'
typeof null //'object'
typeof undefined //'undefined'
typeof NaN //'number'
typeof function(){} //' function'
typeof [] // 'object'
typeof {} //'object'
typeof false //'boolean'
NaN
NaN含義是Not a Number,表示非數字,NaN和任何值都不相等,也無法比較大小,包括自己
typeof NaN //number
數據轉換
有三個函數可以把非數值轉換為數值
- Number()方法
- parseInt()方法
- parseFloat()方法
Number規則相當復雜而且不合理,幾乎不使用,常用的是后兩個,兩個規則類似.
- 忽略字符串前面的空白字符,找到第一個非空白字符
- 如果第一個字符不是-或者數字返回NaN
- 如果是繼續解析,直到非數值模式為止
- 0開頭會當做八進制,0x開頭會當做十六進制,但是可以指定第二個參數指定基數
parseInt("hh44") //NaN
parseInt('-55') //55
parseInt('5512') //5512
parseFloat(".5") //0.5