摘要:語言類型包括和。對語言引擎和開發人員來說,類型是值的內部特征,它定義了值的行為,以使其區別于其他值有七種內置類型空值未定義布爾值數字字符串對象符號,中新增除對象之外,其他統稱為基本類型。
本文主要是奇舞前端特訓營的筆記
https://t.75team.com/video
變量聲明的三種方法
1.var-聲明一個變量,可選擇將其初始化為一個值
- 不支持塊級作用域 - var存在變量提升
console.log(a === undefined) //true var a = 10;
2.let-聲明一個塊級作用域變量,可選擇將其初始化一個值
- 塊級作用域
{ let x = 10; } console.log(typeof x); //undefined
- 同一作用域中不允許重復聲明 - 暫存死區 - 循環中的let作用域 - 瀏覽器兼容性
3.const-聲明一個只讀的常量 綁定的值不可以再次改變
類型ECMAScript語言中所有的值都有一個對應的語言類型。ECMAScript語言類型包括Undefined、Null、Boolean、String、Number和Object。
對語言引擎和開發人員來說,類型是值的內部特征,它定義了值的行為,以使其區別于其他值
JavaScript有七種內置類型:
空值(null)
未定義(undefined)
布爾值( boolean)
數字(number)
字符串(string)
對象(object)
符號(symbol,ES6中新增)
除對象之外,其他統稱為“基本類型”。
Boolean
值:true和false
需要注意:0,"", null, undefined, 會被隱式的轉化為false,其他都為true
建議采用嚴格比較,可以通過!!將非boolean轉化為boolean
比較操作符總會返回boolean
布爾操作符&&和||不會轉化類型
&&和||具有短路特性
console.log(null !== undefined, null == undefined); //true, true console.log(1 && 2) //2
Number
數值范圍
整數-2^53~2^53
超過后會有精度丟失
小數精度Number.EPSILON
Infinity, Number.MAX_VALUE, Number.MIN_VALUE
浮點數精度問題
console.log(0.2+0.4) //0.6000000000000001
限制精度
console.log((0.2+0.4).toFixed(2)); // 0.60
String
引號規范和轉義
建議使用單引號
字符串類型轉換
console.log("1"+2, "2"-1);//"12", 1 隱式類型轉化
字符串模版
Object
對象是個引用類型
值類型和包裝類型
包裝類型typeof是object
對象的copy
let conf = { adapter: "sqlite", db: { aqlite: { name: "xxx.sqlite" }, mysql: { name: "xxx", username: "work", passwd: "***" } } } // ES6淺拷貝 let copied = Object.assign({}, conf); copied.adapter = "mySql"; console.log(conf.adapter); //sqlite console.log(copied.adapter); //mySql copied.db.mySql.name = "yyy.sqlite"; console.log(conf.db.mySql.name); //yyy.sqlite // 深拷貝 function deepCopy(des, src){ for( var key in src){ let prop = src[key]; if(typeof prop === "object"){ des[key] = des[key] || {}; // typeof{} === object deepCopy(des[key], src[key]); }else { des[key] = src[key]; } } return des; } let deepCopied = deepCopy({}, conf); deepCopied.db.sqlite.name = "zzz.sqlite"; // 深拷貝 console.log(deepCopied.db.sqlite.name, conf.db.sqlite.name);//"zzz.sqlite, yyy.sqlite"對象的類型和構造器
new和constructor
new是一種語法糖
prototype
//原型鏈 // __proto__暴力構建原型鏈 var a = {x: 1},b = {y: 2}, c = {z: 3}; b.__proto__ = a; c.__proto__ = b; console.log(c); // 使用Object.create(a)構建原型鏈 var a = {x: 1}; var b = Object.create(a); b.y = 2; var c = Object.create(b); c.z = 3; console.log(c); // 使用構造器構建原型鏈 function A(){ this.x = 1; } function B(){ this.y = 2; } B.prototype = new A(); function C(){ this.z = 3; } C.prototype = new B(); var c = new C(); console.log(c); // 三種方式都是構建原型鏈
一張圖片有助于理解
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81172.html
摘要:打開首先看簡單數據類型拿舉個栗子看懂這一段應該不難。我們把基本數據類型中的這種操作稱為拷值,方便記憶。總結簡單數據類型用拷的,復雜數據類型用借的。 本篇不詳細介紹每種數據類型的用途,如有需要請訪問JS數據類型。 JavaScript中的數據類型 簡單(基本)數據類型: Number、String、Boolean、Undefined、Null復雜(引用)數據類型: Object、Arra...
摘要:語句概況描述在代碼中,使用分號分隔的可以叫做是語句語句塊在代碼中,大括號表示語句塊語句塊中可以存在一條或多條語句語句的分類條件語句循環語句跳轉語句條件語句描述通過對條件表達式的計算結果進行判斷,來決定要執行的語句語句語法條件表達式語句塊當 語句概況 描述 在JavaScript代碼中,使用分號(;)分隔的可以叫做是語句 語句塊 在JavaScript代碼中,大括號({})表示語句塊 ...
摘要:一返回值調用外部方法獲取的值需要對類型做判斷,因為我們對方法返回的值是有期望值類型,但是卻不能保證這個接口返回的值一直是同一個類型。 19年目標:消滅英語!我新開了一個公眾號記錄一個程序員學英語的歷程 有提升英語訴求的小伙伴可以關注公眾號:csenglish 程序員學英語,每天花10分鐘交作業,跟我一起學英語吧 javascript作為一門動態類型語言,具有很高的動態靈活性,當定義函數...
摘要:中有種基本數據類型和。在介紹的基本數據類型前,有必要提到兩個關鍵字和。由于中的變量是松散類型的,所以它提供了一種檢測當前變量的數據類型的方法,也就是關鍵字。輸出的結果為用于表示由零數字或字符組成的字符序列,即字符串。 如果你是一名IT前端人員,怎么會不懂JavaScript的美?如果你是一名前端在學人員,接觸JavaScript后,怎么會不明白JavaScript中基本數據類型?大家都...
摘要:嚴格模式嚴格模式的概念所謂嚴格模式就是對中的一種限制性更強的方式屬于代碼的一種強制規則來規范代碼的格式簡單的說就是必須按照嚴格模式的規則書寫代碼否則就會報錯嚴格模式修正了一些引擎難以優化的錯誤同樣的代碼有些時候嚴格模式會比非嚴格模式下更加快 嚴格模式 嚴格模式的概念 所謂嚴格模式就是對JavaScript中的一種限制性更強的方式. 屬于代碼的一種強制規則,來規范代碼的格式簡單的說就是...
閱讀 2885·2021-10-26 09:49
閱讀 3221·2021-10-14 09:42
閱讀 2042·2021-09-13 10:31
閱讀 2580·2019-08-30 11:13
閱讀 2962·2019-08-29 16:31
閱讀 1068·2019-08-29 13:58
閱讀 1859·2019-08-29 12:12
閱讀 3554·2019-08-26 13:48