JavaScript數據類型和基礎語法
基礎語法
JavaScript是區分大小寫的,並使用Unicode字符集. 舉個?:
var Fish = "Hello World";
但是因爲是JavaScript是區分大小寫的,所以fish
和Fish
是兩個不同的變量.在JavaScript中,使用;
進行分隔語句.獨佔一行的時候可以不用,但是不建議這樣做.
註釋
// 單行註釋
/*
多行
註釋
*/
聲明
JavaScript有三種聲明方式:
var
聲明一個變量let
聲明一個塊作用域的局部變量const
聲明一個塊作用域的只讀常量
變量
變量的又可以稱作標識符,有其一定的規則.JavaScript的標識符必須以字母,下劃線或者美元符號開頭,後面可以接數字.因爲JavaScript是區分大小寫的,所以字母可以從A-Z,a-z.也可以使用部分的Unicode編碼和ISO8859-1.
比如:Name
,sex123
,$credit
,_name
聲明變量
- 使用關鍵字
var
,var x = 1
- 直接賦值,
x = 1
- 使用關鍵字
let
,let x = 1
變量求值
使用var
或let
聲明的變量,如果沒有賦值,則值爲underfined
.如果引用一個沒有聲明值得變量,會報引用錯誤異常(ReferenceError)
var a;
console.log(a); //a的值就是underfined
underfined
可以用來判斷一個變量是否賦值.在布爾類型中則會被當做false.
var a;
if(a === underfined) {
// a沒有賦值,所以這裏會通過
}
var a = [];
if (!a[0]) {
// 這裏會通過
}
在使用運算符的時候,underfined
會被轉換爲NaN
var a;
a + 1; // 結果爲NaN
如果給變量賦值爲null,null在運算時會被當做0來計算.
var a = null;
a + 1; // 這裏結果爲1
變量的作用域
在函數外部聲明的變量,叫做全局變量,可以在當前任何位置進行訪問.在函數內部聲明的變量,叫做局部變量.只能在當前函數內部訪問.
ECMAScript6之前的代碼中,沒有語句塊內部的變量也是全局範圍的.
if() {
var a = 1;
}
console.log(x); // 5
使用let
聲明:
if(){
let a = 1;
}
console.log(a) // ReferenceError
變量提升
JavaScript可以先使用變量再聲明變量,然而不會引發異常.這個概念爲變量提升.但是這個變量提升後返回的是underfined
,哪怕已經給變量賦值.
console.log(a === underfined) // true
var a = 1;
在ECMAScript6中,let/const
不會提升,並會報引用錯誤:
console.log(a); //ReferenceError
let a = 1;
函數提升
只有函數聲明會被提升,函數表達式不會提升:
zoom(); // zoom
function zoom() {
console.log('zoom');
}
name(); // 錯誤
var name = function() {
console.log('name');
}
全局變量
在網頁中,全局對象是window
,所以可以使用window.variable
來設置和訪問全局變量.
常量
使用關鍵字const
創建一個只讀的常量.
const ABC = 123;
常量不可以重新賦值,也不能重新聲明.常量的作用域規則和let
的塊級作用域變量相同.
在同一個作用域中,不能使用和變量名或者函數名相同的名字來命名常量:
function a(){};
const a = 1;
// or
function a(){
const b = 5;
var b;
}
但是,給常量進行對象屬性賦值是不受保護的:
// 這裏不會錯誤
const ABC = {'a': '1'};
ABC.a = '2';
同樣的,數組形式的賦值也是如此:
const ABC = ['a','b'];
ABC.push('c');
console.log(ABC);
數據結構和類型
ECMAScript標準定義了8種數據類型:
- 基本數據類型
- Boolean
- null
- underfined
- Number
- BigInt
- String
- Symbol
- Object
數據類型的轉換
JavaScript是一種動態類型語言,這就表示在聲明變量是可以不指定數據類型,而是可以自動轉換的.
var a = 1;
a = "1";
上述代碼不會出錯.
使用+
可以將字符串和數據連接爲一個字符串:
a = '12xx' + 1;
b = 1 + '123xxx';
但是,如果字符串是數組,不使用+
的時候,JavaScript會把字符串轉換爲數字進行運算操作:
'1' - 1; // 0
字符串轉換爲數字
JavaScript內置了將字符串轉爲相對於的數字.parseInt(),parseFloat()
轉爲整數和浮點數.