Javascript 數(shù)據(jù)類型與基本運算

標識符命名規(guī)則

對于變量名,鍵值對中的鍵名應(yīng)滿足如下要求:

  • 開頭必須是字母、下劃線(_)或美元符號($)
  • 除了開頭以外的字符也可以是數(shù)字
  • 不可以是關(guān)鍵字和保留字
  • 最好不要和全局變量/函數(shù)同名扛门,會把原有變量/函數(shù)覆蓋的風險

這里亮元,關(guān)鍵字就是在 js 中有特殊意義的單詞,而保留字是為了以后使用預(yù)留的詞語炬太。但不要求背它們孔祸,隨著學習的深入隆敢,自然就都記住了。

常見的關(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等等

本文可能會直接用到的有:

  • var: 定義一個變量
  • console.log(): 在瀏覽器控制臺或后臺終端輸出一個值
  • alert(): 在瀏覽器彈窗輸出一個值

基本數(shù)據(jù)類型

Javascript 基本類型包括:數(shù)值叠穆,字符串少漆,null,undefined 和布爾型硼被。還有 ES6 中的 Symbol 類型示损,這篇博客暫時先不提 Symbol 類型。

比如:

var num = 1;    //數(shù)值型
var str = 'hello world;   //字符串嚷硫,雙引號也可以
var flag = true;   //布爾型检访,取值 true 或 false
var obj = null;    //空類型
var it = undefined;   //undefined

這里簡單解釋一下需要注意問題:

  1. 數(shù)值類型是不區(qū)分整型與浮點型的;
  2. 數(shù)值類型默認都是以 double 浮點數(shù)形式儲存的仔掸;
  3. 數(shù)值類型范圍在 5e-324 至1.7976931348623157e+308烛谊,即 `Number.MIN_VALUE 至 Number.MAX_VALUE;
  4. js 沒有字符類型嘉汰,只有字符串類型丹禀;
  5. null 表示正常的、意料之中的空值鞋怀,而 undefined 表示以外的空值双泪。對于只聲明未賦值的變量,默認值為 undefined密似;
  6. 數(shù)值類型有幾個特殊值:
  • Infinity: 正無窮
  • -Infinity:負無窮
  • NaN:非法數(shù)值(Not a Number)焙矛,但他還是個數(shù)值(好矛盾)

復(fù)雜數(shù)據(jù)類型

基本數(shù)據(jù)類型對應(yīng)的對象

js 中其實除了基本類型以外其他類型的本質(zhì)都是對象,就算是基本類型變量残腌,除了 undefined 和 null 以外村斟,都有其對應(yīng)的對象類型贫导。如下:

var num = new Number(2);
var str = new String('hello');
var flag = new Boolean(true);

這里一定要清楚,其對象類型和基本類型不是一個東西蟆盹,具體的看完類型轉(zhuǎn)換就一切都清楚了孩灯。

js中其他常見的對象

當然,下面繼續(xù)說對象逾滥,js 常用的對象有:Array峰档,Object,Date寨昙,RegExp等等讥巡。定義方法如下:

var arr = new Array();   //得到一個空數(shù)組
var arr2 = new Array(5);   //得到一個長度為5的數(shù)組,初值為undefined
var arr3 = new Array('b','a','c');    //得到一個長為3舔哪,對應(yīng)值為'b','a','c' 的數(shù)組
var obj = new Object();   //得到一個空對象
var now = new Date();    //得到當前時間
var reg = RegExp('^[A-Za-z][\w\d]*$');   //得到一個正則表達式

對于數(shù)組欢顷、正則表達式和對象還有一種字面量的定義方法,這個方法和上面是完全等價的:

var arr = [];   //得到一個空數(shù)組
var arr3 = ['b','a','c'];    //得到一個長為3捉蚤,對應(yīng)值為'b','a','c' 的數(shù)組
var obj = {};   //得到一個空對象
var reg = /^[A-Za-z][\w\d]*$/;  //得到一個正則表達式

數(shù)組和對象的訪問

這個部分直接舉例子:

  • 數(shù)組:一些數(shù)據(jù)的集合抬驴,這里不要求數(shù)據(jù)必須是同樣類型的
var arr = [1, 2, 3, 'a'];    //定義一個數(shù)組
arr[0];     //1     訪問數(shù)組的第1個元素,注意索引從0開始
arr[1];     //2     訪問數(shù)組的第2個元素
arr[3];     //'a'    訪問數(shù)組的第4個元素
arr[-1],  arr[4],  arr[1.3];    //undefined   訪問數(shù)組越界或索引不正確都返回 undefined
  • 對象: 鍵值對的集合外里,鍵值對之間由逗號分開怎爵,鍵和值由冒號分開
var obj = {
    name: 'Bob',
    age: 18,
    gender: 'M'
};
obj.name;    //'Bob'  獲取 obj 對象的姓名
obj.age;    //18  獲取 obj 對象的年齡
obj.gender;    //'M'  獲取 obj 對象的性別

注意當鍵名中有符號也需要加引號。

其余的對象會在以后用到的時候再仔細講

基本運算和運算符

運算符就像我們數(shù)學中的加減乘除盅蝗,也像數(shù)學中的計算規(guī)定的先后順序鳖链,這里我直接給出所以運算符的運算順序和實例,必要的解釋在表格后面墩莫,沒有解釋到的屬于比較深奧的運算符芙委,記住它的順序即可,功能后續(xù)再理解狂秦。

優(yōu)先級 運算符 結(jié)合性 舉例 說明
20 圓括號 n/a (…) -
19 成員訪問 從左到右 obj.name -
19 需計算的成員訪問 從左到右 obj["name"] -
19 new(帶參數(shù)列表) n/a new Person() -
18 函數(shù)調(diào)用 從左到右 fun(args) -
18 new(無參數(shù)列表) 從右到左 new fun -
17 后置遞增 n/a a++ 相當于 a = a + 1;
17 后置遞減 n/a a-- 相當于 a = a - 1;
16 邏輯非 從右到左 !a -
16 按位非 從右到左 ~a -
16 一元加法 從右到左 +a -
16 一元減法 從右到左 -a -
16 前置遞增 從右到左 ++a -
16 前置遞減 從右到左 --a -
16 typeof 從右到左 typeof 4 得到值的類型 'number'
16 void 從右到左 void(0) 執(zhí)行表達式并返回 undefined
16 delete 從右到左 deleteobj.age 刪除對象屬性
15 從右到左 2**4 得 16
14 乘法 從左到右 2*3 得 6
14 除法 從左到右 4/2 得 2
14 取模(求余) 從左到右 4%3 得 1
13 加法 從左到右 1+3 得 4
13 減法 從左到右 2-3 得 -1
12 按位左移 從左到右 32<<5 得 1024
12 按位右移 從左到右 32>>2 得 -8
12 無符號右移 從左到右 -32>>>2 得 1073741816
11 小于 從左到右 -1 < 2 得 true
11 小于等于 從左到右 -1 <= 2 得 true
11 大于等于 從左到右 -1 >= 2 得 false
11 大于 從左到右 -1 > 2 得 false
11 in 從左到右 "name" in obj -
11 instanceof 從左到右 li instanceof HTMLElement -
10 等號 從左到右 5 == '5' 得 true
10 非等號 從左到右 5 != '5' 得 false
10 全等號 從左到右 5 === '5' 得 false
10 非全等號 從左到右 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 ?: 從右到左 8 !=0 ? 1 : 3 得 1
3 賦值 從右到左 a = 2 -
3 += 從右到左 a += 2 相當于 a = a + 2
3 -= 從右到左 a -= 2 相當于 a = a - 2
3 *= 從右到左 a *= 2 相當于 a = a * 2
3 /= 從右到左 a /= 2 相當于 a = a / 2
3 &= 從右到左 a &= 2 相當于 a = a & 2
3 = 從右到左 a = 2 相當于 a = a 2
3 ^= 從右到左 a ^= 2 相當于 a = a ^ 2
3 %= 從右到左 a %= 2 相當于 a = a % 2
3 <<= 從右到左 a <<= 2 相當于 a = a << 2
3 >>= 從右到左 a >>= 2 相當于 a = a >> 2
3 >>>= 從右到左 a >>>= 2 相當于 a = a >>> 2
2 yield 從右到左 yield returnValue; -
2 yield* 從右到左 yield* returnValue; -
1 展開運算符 n/a arr1.push(...arr2) -
0 逗號 從左到右 a=1,b=2 返回最后一個表達式的值 2

需要說明的是:

  1. 優(yōu)先級越高的優(yōu)先計算裂问,同優(yōu)先級的從左到右依次計算侧啼;
  2. a++ 與 ++a 的區(qū)別: 前者先返回值后自加,后者先自加再返回值(a-- 與 --a 同理)堪簿;
  3. 涉及到位運算的部分不是十分重要痊乾,但以后的文章會細談;
  4. == 和 === 的區(qū)別椭更,前者比較是發(fā)生自動類型轉(zhuǎn)換哪审,后者不發(fā)生自動類型轉(zhuǎn)換(!= 與 !== 同理);
  5. 對于 exp ? val1 : val2; 如果 exp 的結(jié)果為 true虑瀑,整個表達式得 val1, 否則得 val2;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末湿滓,一起剝皮案震驚了整個濱河市滴须,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌叽奥,老刑警劉巖扔水,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異而线,居然都是意外死亡铭污,警方通過查閱死者的電腦和手機恋日,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門膀篮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人岂膳,你說我怎么就攤上這事誓竿。” “怎么了谈截?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵筷屡,是天一觀的道長。 經(jīng)常有香客問我簸喂,道長毙死,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任喻鳄,我火速辦了婚禮扼倘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘除呵。我一直安慰自己再菊,他們只是感情好,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布颜曾。 她就那樣靜靜地躺著纠拔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪泛豪。 梳的紋絲不亂的頭發(fā)上稠诲,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音诡曙,去河邊找鬼臀叙。 笑死,一個胖子當著我的面吹牛岗仑,可吹牛的內(nèi)容都是我干的匹耕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼荠雕,長吁一口氣:“原來是場噩夢啊……” “哼稳其!你這毒婦竟也來了驶赏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤既鞠,失蹤者是張志新(化名)和其女友劉穎煤傍,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘱蛋,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蚯姆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了洒敏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片龄恋。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖凶伙,靈堂內(nèi)的尸體忽然破棺而出郭毕,到底是詐尸還是另有隱情,我是刑警寧澤函荣,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布显押,位于F島的核電站,受9級特大地震影響傻挂,放射性物質(zhì)發(fā)生泄漏乘碑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一金拒、第九天 我趴在偏房一處隱蔽的房頂上張望兽肤。 院中可真熱鬧,春花似錦殖蚕、人聲如沸轿衔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽害驹。三九已至,卻和暖如春蛤育,著一層夾襖步出監(jiān)牢的瞬間宛官,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工瓦糕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留底洗,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓咕娄,卻偏偏與公主長得像亥揖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容