摘要:常見的關(guān)鍵字有等等常見的保留字有等等本文可能會(huì)直接用到的有定義一個(gè)變量在瀏覽器控制臺(tái)或后臺(tái)終端輸出一個(gè)值在瀏覽器彈窗輸出一個(gè)值基本數(shù)據(jù)類型基本類型包括數(shù)值,字符串,,和布爾型。
標(biāo)識(shí)符命名規(guī)則
對(duì)于變量名,鍵值對(duì)中的鍵名應(yīng)滿足如下要求:
開頭必須是字母、下劃線(_)或美元符號(hào)($)
除了開頭以外的字符也可以是數(shù)字
不可以是關(guān)鍵字和保留字
最好不要和全局變量/函數(shù)同名,會(huì)把原有變量/函數(shù)覆蓋的風(fēng)險(xiǎn)
這里,關(guān)鍵字就是在 js 中有特殊意義的單詞,而保留字是為了以后使用預(yù)留的詞語。但不要求背它們,隨著學(xué)習(xí)的深入,自然就都記住了。
常見的關(guān)鍵字有:
break、delete、function、return、typeof、case、do、if、switch、var、catch、else、in、this、void、continue、false、instanceof、throw、while、debugger、finally、new、true、const、with、let、default、for、null、try、async 等等
常見的保留字有:
class、enum、export、extends、import 、super等等
本文可能會(huì)直接用到的有:
var: 定義一個(gè)變量
console.log(): 在瀏覽器控制臺(tái)或后臺(tái)終端輸出一個(gè)值
alert(): 在瀏覽器彈窗輸出一個(gè)值
基本數(shù)據(jù)類型Javascript 基本類型包括:數(shù)值,字符串,null,undefined 和布爾型。還有 ES6 中的 Symbol 類型,這篇博客暫時(shí)先不提 Symbol 類型。
比如:
var num = 1; //數(shù)值型 var str = "hello world"; //字符串,雙引號(hào)也可以 var flag = true; //布爾型,取值 true 或 false var obj = null; //空類型 var it = undefined; //undefined
這里簡(jiǎn)單解釋一下需要注意問題:
數(shù)值類型是不區(qū)分整型與浮點(diǎn)型的;
數(shù)值類型默認(rèn)都是以 double 浮點(diǎn)數(shù)形式儲(chǔ)存的;
數(shù)值類型范圍在 5e-324 至1.7976931348623157e+308,即 `Number.MIN_VALUE 至 Number.MAX_VALUE;
js 沒有字符類型,只有字符串類型;
null 表示正常的、意料之中的空值,而 undefined 表示以外的空值。對(duì)于只聲明未賦值的變量,默認(rèn)值為 undefined;
數(shù)值類型有幾個(gè)特殊值:
Infinity: 正無窮
-Infinity:負(fù)無窮
NaN:非法數(shù)值(Not a Number),但他還是個(gè)數(shù)值(好矛盾)
復(fù)雜數(shù)據(jù)類型 基本數(shù)據(jù)類型對(duì)應(yīng)的對(duì)象js 中其實(shí)除了基本類型以外其他類型的本質(zhì)都是對(duì)象,就算是基本類型變量,除了 undefined 和 null 以外,都有其對(duì)應(yīng)的對(duì)象類型。如下:
var num = new Number(2); var str = new String("hello"); var flag = new Boolean(true);
這里一定要清楚,其對(duì)象類型和基本類型不是一個(gè)東西,具體的看完類型轉(zhuǎn)換就一切都清楚了。
js中其他常見的對(duì)象當(dāng)然,下面繼續(xù)說對(duì)象,js 常用的對(duì)象有:Array,Object,Date,RegExp等等。定義方法如下:
var arr = new Array(); //得到一個(gè)空數(shù)組 var arr2 = new Array(5); //得到一個(gè)長(zhǎng)度為5的數(shù)組,初值為undefined var arr3 = new Array("b","a","c"); //得到一個(gè)長(zhǎng)為3,對(duì)應(yīng)值為"b","a","c" 的數(shù)組 var obj = new Object(); //得到一個(gè)空對(duì)象 var now = new Date(); //得到當(dāng)前時(shí)間 var reg = RegExp("^[A-Za-z][wd]*$"); //得到一個(gè)正則表達(dá)式
對(duì)于數(shù)組、正則表達(dá)式和對(duì)象還有一種字面量的定義方法,這個(gè)方法和上面是完全等價(jià)的:
var arr = []; //得到一個(gè)空數(shù)組 var arr3 = ["b","a","c"]; //得到一個(gè)長(zhǎng)為3,對(duì)應(yīng)值為"b","a","c" 的數(shù)組 var obj = {}; //得到一個(gè)空對(duì)象 var reg = /^[A-Za-z][wd]*$/; //得到一個(gè)正則表達(dá)式數(shù)組和對(duì)象的訪問
這個(gè)部分直接舉例子:
數(shù)組:一些數(shù)據(jù)的集合,這里不要求數(shù)據(jù)必須是同樣類型的
var arr = [1, 2, 3, "a"]; //定義一個(gè)數(shù)組 arr[0]; //1 訪問數(shù)組的第1個(gè)元素,注意索引從0開始 arr[1]; //2 訪問數(shù)組的第2個(gè)元素 arr[3]; //"a" 訪問數(shù)組的第4個(gè)元素 arr[-1], arr[4], arr[1.3]; //undefined 訪問數(shù)組越界或索引不正確都返回 undefined
對(duì)象: 鍵值對(duì)的集合,鍵值對(duì)之間由逗號(hào)分開,鍵和值由冒號(hào)分開
var obj = { name: "Bob", age: 18, gender: "M" }; obj.name; //"Bob" 獲取 obj 對(duì)象的姓名 obj.age; //18 獲取 obj 對(duì)象的年齡 obj.gender; //"M" 獲取 obj 對(duì)象的性別
注意當(dāng)鍵名中有符號(hào)也需要加引號(hào)。
其余的對(duì)象會(huì)在以后用到的時(shí)候再仔細(xì)講
基本運(yùn)算和運(yùn)算符運(yùn)算符就像我們數(shù)學(xué)中的加減乘除,也像數(shù)學(xué)中的計(jì)算規(guī)定的先后順序,這里我直接給出所以運(yùn)算符的運(yùn)算順序和實(shí)例,必要的解釋在表格后面,沒有解釋到的屬于比較深?yuàn)W的運(yùn)算符,記住它的順序即可,功能后續(xù)再理解。
優(yōu)先級(jí) | 運(yùn)算符 | 結(jié)合性 | 舉例 | 說明 |
20 | 圓括號(hào) | n/a | ( … ) | - |
19 | 成員訪問 | 從左到右 | obj.name | - |
需計(jì)算的成員訪問 | 從左到右 | obj["name"] | - | |
new (帶參數(shù)列表) | n/a | new Person() | - | |
18 | 函數(shù)調(diào)用 | 從左到右 | fun(args) | - |
new (無參數(shù)列表) | 從右到左 | new fun | - | |
17 | 后置遞增 | n/a | a++ | 相當(dāng)于 a = a + 1; |
后置遞減 | n/a | a-- | 相當(dāng)于 a = a - 1; | |
16 | 邏輯非 | 從右到左 | !a | - |
按位非 | 從右到左 | ~a | - | |
一元加法 | 從右到左 | +a | - | |
一元減法 | 從右到左 | -a | - | |
前置遞增 | 從右到左 | ++a | - | |
前置遞減 | 從右到左 | --a | - | |
typeof | 從右到左 | typeof 4 | 得到值的類型 "number" | |
void | 從右到左 | void(0) | 執(zhí)行表達(dá)式并返回 undefined | |
delete | 從右到左 | delete obj.age | 刪除對(duì)象屬性 | |
15 | 冪 | 從右到左 | 2**4 | 得16 |
14 | 乘法 | 從左到右 | 2 * 3 | 得 6 |
除法 | 從左到右 | 4 / 2 | 得 2 | |
取模 | 從左到右 | 4 % 3 | 得 1 | |
13 | 加法 | 從左到右 | 1 + 3 | 得 4 |
減法 | 從左到右 | 2 - 3 | 得 -1 | |
12 | 按位左移 | 從左到右 | 32 << 5 | 得 1024 |
按位右移 | 從左到右 | 32 >> 3 | 得 8 | |
無符號(hào)右移 | 從左到右 | -32 >>> 2 | 得 1073741816 | |
11 | 小于 | 從左到右 | -1 < 2 | 得 true |
小于等于 | 從左到右 | -1 <= 2 | 得 true | |
大于等于 | 從左到右 | 1 >= 2 | 得 false | |
大于 | 從左到右 | 1 > 2 | 得 false | |
in | 從左到右 | "name" in obj | - | |
instanceof | 從左到右 | li instanceof HTMLElement | - | |
10 | 等號(hào) | 從左到右 | 5 == "5" | 得 true |
非等號(hào) | 從左到右 | 5 != "5" | 得 false | |
全等號(hào) | 從左到右 | 5 === "5" | 得 false | |
非全等號(hào) | 從左到右 | 5 !== "5" | 得 true | |
9 | 按位與 | 從左到右 | 10 & 40 | 得 8 |
8 | 按位異或 | 從左到右 | 10 ^ 40 | 得 34 |
7 | 按位或 | 從左到右 | 10 | 40 | 得 42 |
6 | 邏輯與 | 從左到右 | 0 && 3 | 得 0,不得 false |
5 | 邏輯或 | 從左到右 | 0 || 3 | 得 3,不得 true |
4 | ?: | 從右到左 | 3 != 0 ? 1 : 2 | 得 1 |
3 | 賦值 | 從右到左 | a = 2 | - |
a += 2 | 相當(dāng)于 a = a + 2 | |||
a -= 2 | 相當(dāng)于 a = a - 2 | |||
a *= 2 | 相當(dāng)于 a = a * 2 | |||
a /= 2 | 相當(dāng)于 a = a / 2 | |||
a &= 2 | 相當(dāng)于 a = a & 2 | |||
a |= 2 | 相當(dāng)于 a = a | 2 | |||
a ^= 2 | 相當(dāng)于 a = a ^ 2 | |||
a %= 2 | 相當(dāng)于 a = a % 2 | |||
a <<= 2 | 相當(dāng)于 a = a << 2 | |||
a >>= 2 | 相當(dāng)于 a = a >> 2 | |||
a >>>= 2 | 相當(dāng)于 a = a >>> 2 | |||
2 | yield | 從右到左 | yield returnValue; | - |
yield* | 從右到左 | yield* returnValue; | - | |
1 | 展開運(yùn)算符 | n/a | arr1.push(...arr2) | - |
0 | 逗號(hào) | 從左到右 | a=1, b=2 | 返回最后一個(gè)表達(dá)式的值 2 |
需要說明的是:
優(yōu)先級(jí)越高的優(yōu)先計(jì)算,同優(yōu)先級(jí)的從左到右依次計(jì)算;
a++ 與 ++a 的區(qū)別: 前者先返回值后自加,后者先自加再返回值(a-- 與 --a 同理);
涉及到位運(yùn)算的部分不是十分重要,但以后的文章會(huì)細(xì)談;
== 和 === 的區(qū)別,前者比較是發(fā)生自動(dòng)類型轉(zhuǎn)換,后者不發(fā)生自動(dòng)類型轉(zhuǎn)換(!= 與 !== 同理);
對(duì)于 exp ? val1 : val2; 如果 exp 的結(jié)果為 true,整個(gè)表達(dá)式得 val1, 否則得 val2;
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/97464.html
摘要:注意基本變量類型不是對(duì)象類型,只有基本包裝類型才是對(duì)象類型。至于顯示的原型,在里用屬性表示,這個(gè)是原型繼承的基礎(chǔ)知識(shí),在這里就不在敘述了。 前言 如果你要開發(fā)一個(gè)復(fù)雜的產(chǎn)品,那么肯定少不了使用面向?qū)ο髾C(jī)制,當(dāng)然也避不開 Javascript 里面的繼承,instanceof 運(yùn)算符是原生 Javascript 語言中用來判斷實(shí)例繼承的操作符。所以我們有必要深入理解該運(yùn)算符! inst...
摘要:前綴規(guī)范每個(gè)局部變量都需要有一個(gè)類型前綴,按照類型可以分為表示字符串。例如,表示以上未涉及到的其他對(duì)象,例如,表示全局變量,例如,是一種區(qū)分大小寫的語言。布爾值與字符串相加將布爾值強(qiáng)制轉(zhuǎn)換為字符串。 基本概念 javascript是一門解釋型的語言,瀏覽器充當(dāng)解釋器。js執(zhí)行時(shí),在同一個(gè)作用域內(nèi)是先解釋再執(zhí)行。解釋的時(shí)候會(huì)編譯function和var這兩個(gè)關(guān)鍵詞定義的變量,編譯完成后從...
摘要:目錄導(dǎo)語包裝對(duì)象的理解三大包裝對(duì)象的知識(shí)點(diǎn)小結(jié)導(dǎo)語包裝對(duì)象是為了彌補(bǔ)基本數(shù)據(jù)類型的非對(duì)象特性而產(chǎn)生的,對(duì)于基本類型值而言,本來是不存在屬性和方法的,但是我們可以在使用字面量創(chuàng)建字符串時(shí),調(diào)用例如的方法,那么其內(nèi)在原理究竟是什么呢閱讀完本篇文 目錄 導(dǎo)語 1. 包裝對(duì)象的理解 2. 三大包裝對(duì)象的知識(shí)點(diǎn) 3. 小結(jié) 導(dǎo)語 包裝對(duì)象是為了彌補(bǔ)基本數(shù)據(jù)類型的非對(duì)象特性而產(chǎn)生的,對(duì)于基本類型...
摘要:來源編程精解中文第三版翻譯項(xiàng)目原文譯者飛龍協(xié)議自豪地采用谷歌翻譯部分參考了編程精解第版在機(jī)器的表面之下,程序在運(yùn)轉(zhuǎn)。本章將會(huì)介紹程序當(dāng)中的基本元素,包括簡(jiǎn)單的值類型以及值運(yùn)算符。示例中的乘法運(yùn)算符優(yōu)先級(jí)高于加法。 來源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項(xiàng)目原文:Values, Types, and Operators 譯者:飛龍 協(xié)議:CC BY-NC...
摘要:中變量可能包含兩種不同的數(shù)據(jù)類型的值基本類型和引用類型。本文主要介紹基本數(shù)據(jù)類型及其特點(diǎn)。操作符在介紹基本類型值之前,先說下操作符,操作符會(huì)返回?cái)?shù)據(jù)類型的字符串表示。所有未初始化的變量均會(huì)保存該值。 前言JavaScript中的變量為松散類型,所謂松散類型就是指當(dāng)一個(gè)變量被申明出來就可以保存任意類型的值,就是不像SQL一樣申明某個(gè)鍵值為int就只能保存整型數(shù)值,申明varchar只能保...
閱讀 701·2023-04-25 19:53
閱讀 4295·2021-09-22 15:13
閱讀 2578·2019-08-30 10:56
閱讀 1335·2019-08-29 16:27
閱讀 2946·2019-08-29 14:00
閱讀 2424·2019-08-26 13:56
閱讀 447·2019-08-26 13:29
閱讀 1625·2019-08-26 11:31