寫在前面:今天主要介紹兩個東西:JS標識符和數據類型 一 變數和常量 在介紹標識符之前有必要先瞭解一下JS中的變數和常量。 變數:程式執行期間可操作的臨時存儲數據的記憶體空間。 聲明方式: var:函數作用域,變數聲明提前,可重覆聲明,後聲明的覆蓋前面的。 let:塊級作用域,聲明不會提前,不可重覆聲 ...
寫在前面:今天主要介紹兩個東西:JS標識符和數據類型
一 變數和常量
在介紹標識符之前有必要先瞭解一下JS中的變數和常量。
變數:程式執行期間可操作的臨時存儲數據的記憶體空間。
聲明方式:
var:函數作用域,變數聲明提前,可重覆聲明,後聲明的覆蓋前面的。
let:塊級作用域,聲明不會提前,不可重覆聲明。
const:聲明常量,塊級作用域,聲明不會提前,不可重覆聲明,聲明是必須賦值,不可重覆賦值。
常量:程式運行期間不可改變。
二 JavaScript標識符
含義:JS中的標識符本質上是一個字元串。但字元串未必是標識符。
作用:標識符是用來給變數函數等命名的。
規則:
1 、只能由數字、字母、下劃線以及$符號組成。
2 、不能以數字開頭
3 、區分大小寫
4、 使用有具體含義的單詞,動名結合。
5 、遵循小駝峰命名法,即第一個單詞首字母小寫,其他的首字母大寫。
6 、不能使用JS保留字和關鍵字。
JS關鍵字列表如下:
break |
case |
catch |
continue |
default |
delete |
do |
else |
finally |
for |
function |
if |
in |
instanceof |
new |
return |
switch |
this |
throw |
try |
typeof |
var |
void |
while |
with |
JS保留字列表如下:
abstract |
boolean |
byte |
char |
class |
const |
debugger |
double |
enum |
export |
extends |
final |
float |
goto |
implements |
import |
int |
interface |
long |
native |
package |
private |
protected |
public |
short |
static |
super |
synchronized |
throws |
transient |
volatile |
三 JavaScript數據類型
1 、分類
JS中的數據分為兩大類:基本數據類型和複雜數據類型。
基本數據類型:
String(字元串):多個字元的有序序列,並用雙引號或單引號引起來的。
Number(數字):JS在聲明數字類型的變數時不區分浮點數和整數。
Boolean(布爾):只有兩個值:true或者false。表示真或者假。
Undefined(未定義):表示變數未申明。
Null(空):變數已聲明,但是其值為Null。
Symbol(唯一標識):ES6新增的。
複雜數據類型:
Object(對象):JS中一切皆可看做對象。
按照數據的存儲方式也可分為兩大類:原始值和引用值。具體其實和上面一樣。
原始值:存儲在棧(stack)中的簡單數據段,也就是說,它們的值直接存儲在變數訪問的位置。
引用值:存儲在堆(heap)中的對象,也就是說,存儲在變數處的值是一個指針(point),指向存儲對象的記憶體處。
2、 檢測
JS中檢測數據類型的方法是 typeof。
使用typeof檢測數據會返回一下7種數據類型,註意,它們都是以字元串的形式返回:
‘’string‘’;
‘’number‘’;
‘’boolean‘’;
‘’undefined‘’;
‘’object‘’;
‘’function‘’;
‘’symbol‘’;
下麵是一些簡單的例子:
1 typeof "hello";//"string" 2 typeof 123;//"number" 3 typeof true;//"boolean" 4 typeof undefined;//"undefined" 5 function fn(){} 6 var obj = new Object(); 7 var syb = new Symbol(); 8 typeof fn;//"function" 9 typeof obj;//"object" 10 typeof syb;//"symbol"
11 typeof null;//"object",因為null最初被設計是用來當做空對象的占位符的
另外,有兩個特別的數字:NaN(not a number不是一個數字)和infinity(無窮)。
NaN需要用Number.isNaN()檢測;如果參數不是數字則返回true,是數字則返回false;
另一個方法Number.isFinite();如果參數是NaN或者infinity則返回false,否則返回true。