摘要:語法和數據類型正文開始本章節復習的是中的基本語法,變量聲明,數據類型和字面量。聲明一個塊作用域的局部變量,可賦一個初始值。變量聲明有三種方式如,聲明局部變量和全局變量。
最近開始把精力放在重新復習JavaScript的基礎知識上面,不再太追求各種花枝招展的前端框架,框架再多,適合實際項目才是最重要。
上星期在掘金發布了幾篇文章,其中最大塊算是 【復習資料】ES6/ES7/ES8/ES9資料整理(個人整理),也是讓我好好把這些規范復習了一遍,雖然不是完全的原創,而是自己的一些復習筆記,但是還是讓我感覺還是挺有用的,在項目開發過程中,有有意識的去使用到這些新的規范。
這次開始復習 MDN 這個系列的文章,鞏固好自己的基礎,也讓自己養成記錄學習的習慣,當然這些文章我也會同步到自己的博客。
希望自己的文章會對各位有所幫助,也歡迎各位大佬指點。
1.MDN 語法和數據類型
正文開始
本章節復習的是JS中的基本語法,變量聲明,數據類型和字面量。
首先要記住:JavaScript 對大小寫敏感,即var att; 和 var Att 是兩個不同變量。
1.注釋// 單行注釋 /* 多行注釋 */2. 聲明
JavaScript有三種聲明方式:
var 聲明一個變量,可賦一個初始值。
let 聲明一個塊作用域的局部變量,可賦一個初始值。
const 聲明一個塊作用域的只讀命名的常量。
聲明變量變量的名字又叫做“標識符”,必須以字母、下劃線(_)或者美元符號($)開頭,并且區分大小寫。
變量聲明有三種方式:
如var a = 1,聲明局部變量和全局變量。
如a = 1,聲明一個全局變量,且在嚴格模式報錯,不應該使用。
如let a = 1,聲明一個塊作用域的局部變量。
注意:
若沒有為變量賦初始值,則值默認為undefined;
let a; console.log(a); // undefined
若沒有聲明變量而直接使用,會拋出ReferenceError錯誤;
console.log(b); // Uncaught ReferenceError: b is not defined
當變量值為undefined時,布爾值環境會當做false,數值環境會當做NaN;
var a; if(!a){ console.log("a為undefined"); // a為undefined } a + 1; // NaN
當變量值為null時,布爾值環境會當做false,數值環境會當做0;
let a = null; if(!a){ console.log("a為unll"); // a為unll } a + 1; // 1變量作用域
全局變量:即聲明在函數之外,當前文檔所有地方都可以訪問;
局部遍歷:即聲明在函數內部,僅在當前函數內可以訪問;
在ES5之前沒有語句塊作用域的概念,并只能使用var進行聲明,用var聲明的變量,在函數內和全局都可以訪問,而在ES6開始,將只能在聲明的作用域中使用:
if(true){ var a = 1; } a; // 1 if(true){ let b = 2; } b; // ReferenceError: b is not defined變量聲明提前
即將變量的聲明提升到函數或語句的頂部,并返回undefined直到變量被初始化操作。
千萬注意:
ES5以及之前,才有變量聲明提前,在ES6開始就不存在變量提升。
// ES5及之前 console.log(a); // undefined var a = 1; console.log(a); // 1 // ES6開始 console.log(b); // Uncaught ReferenceError: b1 is not defined let b = 2; console.log(b); // 2函數提升
函數聲明有兩種方式:函數聲明和函數表達式兩種方式:
// 函數聲明 f(); // "hi leo" function(){ console.log("hi leo"); }; // 函數表達式 g(); // Uncaught TypeError: g is not a function var g = function(){ // 換成 let 聲明也一樣 console.log("hi leo"); }全局變量
全局變量默認是全局對象(window)的屬性,常常使用window.variable語法來設置和訪問全局變量。
這邊還需要記住:
ES5之中,頂層對象的屬性等價于全局變量(瀏覽器環境中頂層對象是window,Node中是global對象);
ES6之中,var/function聲明的全局變量,依然是頂層對象的屬性,但是let/const/class聲明的全局變量不屬于頂層對象的屬性,即ES6開始,全局變量和頂層對象的屬性是分開的。
// ES5 var a = "leo"; window.a; // "leo" // ES6 let b = "leo"; window.b; // undefined常量
ES6之后我們可以使用const來聲明一個只讀的常量,并且在聲明時必須賦值,之后在相同作用域中不能賦值也不能重新聲明,否則報錯。
const a; // Uncaught SyntaxError: Missing initializer in const declaration const b = "leo"; b = "hi"; // Uncaught TypeError: Assignment to constant variable. function f(){ const a1 = "hi"; console.log(a1); } f(); // "hi" const a1 = "hi leo"; a1; // "hi leo"
盡管const聲明的變量不能直接修改值,但是對于對象和數組,卻是不受保護可以修改的:
const a = {name:"leo",age:25}; a.name = "pingan"; // a => {name: "pingan", age: 25} const b = ["hi", "leo"]; b[1] = "pingan"; // b => ["hi", "pingan"]3.數據結構和類型 數據類型
JavaScript中一共分為7中不同類型:
六種原型數據類型:
1.Boolean : 布爾值,true和false;
2.null : 對大小寫敏感(即null/Null/NULL完全不同);
3.undefined : 空類型,變量未定義時候的值;
4.Number : 數值類型,如100;
5.String : 字符串類型,如"hi pingan";
6.Symbol(ES6新增) : 表示一種唯一且不可變的數據;
以及Object對象類型
數據類型轉換由于JavaScript是門動態類型語言,因此在開發過程可以不需要指定數據類型,在執行時會自動轉換:
var a = 100; a = "hi leo"; // 這樣不報錯
另外還有:
let a1 = "10"; let b1 = 20; a1 + b1; // 30 let a2 = "leo " + 10 + " age"; // "leo 10 age" "10" - 5; // 5 "10" + 5; // 105
轉換字符串為數字小技巧
小技巧很多,這里說個最簡單的:
// 這樣不會使兩個數字計算總和: "1.1" + "1.2"; // "1.11.2" // 實際上要這樣: +"1.1" + +"1.2"; // 2.34.字面量
字面量是用來表示如何表達這個值,簡單理解就是變量賦值時右邊的都是字面量。比如:
let a = "hi leo";
hi leo為字符串字面量,a為變量名。
字面量分為七種:
1.數組字面量
2.布爾字面量
3.浮點數字面量
4.整數字面量
5.對象字面量
6.正則字面量
7.字符串字面量
數組字面量使用數組字面量創建數組的時,指定元素的值,并作為數組的初始化,從而確定數組長度。
let a = ["hi","leo","hello","pingan"]; a[1]; // "leo" a.length; // 4
若使用多余逗號,作為數組字面量,則值為undefined,并且數組長度也會正常計算:
let a = ["hi", ,"leo"]; a[0]; // "hi" a[1]; // undefined a.length; // 3布爾字面量
只有true和false:
let a = true;整數字面量
整數可以用十進制(基數為10)、十六進制(基數為16)、八進制(基數為8)以及二進制(基數為2)表示。
浮點數字面量浮點數字面量組成:
一個十進制的整數,可以帶正負號;
小數點
小數部分(只能十進制)
指數部分
let a = 3.14; // 3.14 let b = -.001; // -0.001 let c = -3.14e+12; // -3.14*1012 let d = .1e-23;// 0.1*10 - 23 = 10-24 = 1e-24對象字面量
對象字面量是由{}包含一個或多個 鍵:值 對的列表:
let a1 = "hi leo"; let a2 = function(){ return "my name is pingan" }; let obj = { n1 : "pingan", n2 : a1, n3 : a2() } obj; // {n1: "pingan", n2: "hi leo", n3: "my name is pingan"}
也可以使用任意數字或字符串作為對象屬性的名字,但必須用""引號包裹:
let obj = { "" : "hi leo", "!" : "hi pingan", 2 : "hi number" } obj; // {2: "hi number", "": "hi leo", !: "hi pingan"} obj[""]; // "hi leo" obj[2]; // "hi number"正則字面量
使用字符被正斜杠“/”圍起來的表達式:
var a = /ab+c/;字符串字面量
使用單引號("")或者雙引號("")括起來的字符串:
let a = "leo"; a.length; // 3
ES6中新增了模板字符串,作用于:
方便拼接字符串
有效實現字符串換行
防止注入攻擊
建立基于字符串的高級數據抽象
// 拼接字符串 let name = "leo"; let a = ` hi ${name} `; a; // "hi leo" // 換行 let b = ` hi leo `; b; // " // hi // leo // "
常用特殊字符:
字符 | 含義 |
---|---|
b | 退格符 |
f | 換頁符 |
n | 換行符 |
r | 回車符 |
t | Tab (制表符) |
v | 垂直制表符 |
" | 單引號 |
" | 雙引號 |
反斜杠字符() |
本部分內容到這結束
Author | 王平安 |
---|---|
pingan8787@qq.com | |
博 客 | www.pingan8787.com |
微 信 | pingan8787 |
每日文章推薦 | https://github.com/pingan8787... |
JS小冊 | js.pingan8787.com |
歡迎關注微信公眾號【前端自習課】每天早晨,與您一起學習一篇優秀的前端技術博文 .
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/99855.html
摘要:系列目錄復習資料資料整理個人整理重溫基礎篇重溫基礎對象介紹本章節復習的是中的關于對象相關知識。概念概念有三點全稱對象表示法。對象沒有分號,而對象有。序列化對象時,所有函數及原型成員都會被忽略,不體現在結果上。 本文是 重溫基礎 系列文章的第十六篇。今日感受:靜。 系列目錄: 【復習資料】ES6/ES7/ES8/ES9資料整理(個人整理) 【重溫基礎】1-14篇 【重溫基礎】15...
摘要:系列目錄復習資料資料整理個人整理重溫基礎語法和數據類型重溫基礎流程控制和錯誤處理重溫基礎循環和迭代重溫基礎函數本章節復習的是中的表達式和運算符,用好這些可以大大提高開發效率。 本文是 重溫基礎 系列文章的第五篇。今日感受:家的意義。 系列目錄: 【復習資料】ES6/ES7/ES8/ES9資料整理(個人整理) 【重溫基礎】1.語法和數據類型 【重溫基礎】2.流程控制和錯誤處理 【重溫基...
摘要:本文是重溫基礎系列文章的第十篇。返回一個由回調函數的返回值組成的新數組。返回一個數組迭代器對象,該迭代器會包含所有數組元素的鍵值對。回調函數接收三個參數,當前值當前位置和原數組。 本文是 重溫基礎 系列文章的第十篇。 今日感受:平安夜,多棒。 系列目錄: 【復習資料】ES6/ES7/ES8/ES9資料整理(個人整理) 【重溫基礎】1.語法和數據類型 【重溫基礎】2.流程控制和錯誤...
摘要:本文是重溫基礎系列文章的第十二篇。注意對象的名稱,對大小寫敏感。基礎用法第一個參數是目標對象,后面參數都是源對象。用途遍歷對象屬性。用途將對象轉為真正的結構。使用場景取出參數對象所有可遍歷屬性,拷貝到當前對象中。類似方法合并兩個對象。 本文是 重溫基礎 系列文章的第十二篇。 今日感受:需要總結下2018。 這幾天,重重的感冒發燒,在家休息好幾天,傷···。 系列目錄: 【復習資料...
摘要:本文是重溫基礎系列文章的第十四篇。元,是指程序本身。有理解不到位,還請指點,具體詳細的介紹,可以查看維基百科元編程。攔截,返回一個布爾值。 本文是 重溫基礎 系列文章的第十四篇。 這是第一個基礎系列的最后一篇,后面會開始復習一些中級的知識了,歡迎持續關注呀! 接下來會統一整理到我的【Cute-JavaScript】的JavaScript基礎系列中。 今日感受:獨樂樂不如眾樂樂...
閱讀 2947·2021-09-23 11:32
閱讀 2918·2021-09-22 15:12
閱讀 1708·2019-08-30 14:07
閱讀 3448·2019-08-29 16:59
閱讀 1640·2019-08-29 11:11
閱讀 2307·2019-08-26 13:50
閱讀 2426·2019-08-26 13:49
閱讀 2621·2019-08-26 11:49