變數
變數宣告的幾種方式
var let const
相同之處
-
varletconst都可以用來宣告一個變數 -
都擁有函式作用域與全域作用域
不同之處
-
var宣告的變數有變數提升
而let和const宣告的變數不會存在這個問題 -
var沒有塊級作用域,let、const宣告的變數具有塊級作用域
塊級作用域:
if(true){
let name = 'let宣告的變數';
const enums = 'const宣告的變數'
}
var宣告的變數是可以被重復定義的,let宣告的變數在同一個作用域中是 不可以重復宣告, 但是可以重復修改,const宣告的是一個常量,在規范上是不可以被重復定義重復修改的,但是當其變數的值為參考資料型別時,她所指向到堆
中的值是可以被重復修改的,如果要對一個值進行修改,建議使用let宣告變數,
作用域
js中作用域分為: 全域作用域 函式作用域 塊級作用域
作用域鏈
尋找當前變數一直從當前作用域尋找至全域作用域形成的鏈被稱為作用域鏈
資料型別
基礎資料型別[值全部存盤在堆疊中]
- Number --- 數值
- String --- 字串
- Boolean --- 布林值
- Symbol --- 唯一值
- BigInt ---超出安全數值的值
- Undefined --- 未定義的值
- Null --- 未初始化的值
參考資料型別[參考資料型別存在堆中,鍵值存在堆疊中]
- Object --- 物件
- Array --- 陣列
型別判斷
基本資料型別
- 基本資料型別可以通過typeof 來進行判斷是哪種基本資料型別
const str = '字串' //string
const num = 123 //Number
const Boolean = true //Boolean
const nul = null //Object
const a = undefined //undefined
const bigInt = BigInt(123n) //BigInt
const sybmol = Symbol('asd') //Symbol
- Object.prototype.toString.call(xxx).slice(8,-1) //回傳檢測到的資料型別
- str.proto === String.prototype
參考資料型別
參考資料型別可以判斷原型是否相等
手寫型別判斷
function getType(type) {
if (typeof type === 'object') return Object.prototype.toString.call(type).slice(8, -1)
return typeof type
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/502259.html
標籤:其他
上一篇:記錄第一次給開源專案提 PR
下一篇:ES6 Promise詳解
