學習Javascript數(shù)據(jù)結構與算法(第2版)筆記(1)

第 1 章 JavaScript簡介

  • 使用 Node.js 搭建 Web 服務器
npm install http-server -g
http-server
  • JavaScript 的類型有數(shù)字可帽、字符串擦盾、布爾值、函數(shù)和對象系忙。還有 undefined 和 null 诵盼,以及數(shù)組、日期和正則表達式。
操作符
算數(shù)操作符 描述
+ 加法
- 減法
* 乘法
/ 除法
% 取余
++ 遞增
-- 遞減
賦值操作符 描述
= 賦值
+= 加/賦值 (x += y) == (x = x + y)
-= 減/賦值 (x -= y) == (x = x - y)
*= 乘/賦值 (x *= y) == (x = x * y)
/= 除/賦值 (x /= y) == (x = x / y)
%= 取余/賦值 (x %= y) == (x = x % y)
比較操作符 描述
== 相等
=== 全等
!= 不等
> 大于
>= 大于等于
< 小于
<= 小于等于
邏輯操作符 描述
&&
||
!
位操作符 描述
&
|
~
^ 異或
<< 左移
>> 右移
  • typeof 操作符可以返回變量或表達式的類型
  • JavaScript還支持 delete 操作符风宁,可以刪除對象里的屬性
數(shù)值類型 轉換成布爾值
undefined false
null false
布爾值 true是 true 洁墙,false是 false
數(shù)字 +0 、 -0 和 NaN 都是 false 戒财,其他都是 true
字符串 如果字符串是空的(長度是0)就是 false 热监,其他都是 true
對象 true
相等操作符( == 和 === )
類型(x) 類型(y) 結 果
null undefined true
undefined null true
數(shù)字 字符串 x == toNumber(y)
字符串 數(shù)字 toNumber(x) == y
布爾值 任何類型 toNumber(x) == y
任何類型 布爾值 x == toNumber(y)
字符串或數(shù)字 對象 x == toPrimitive(y)
對象 字符串或數(shù)字 toPrimitive(x) == y
  • 如果x和y是相同類型,JavaScript會比較它們的值或對象值固翰。其他沒有列在這個表格中的情況
    都會返回 false 狼纬。
  • toNumber 和 toPrimitive 方法是內部的,并根據(jù)以下表格對其進行估值骂际。
  • toNumber 方法對不同類型返回的結果如下:
值類型 結 果
undefined NaN
null +0
布爾值 如果是 true 疗琉,返回 1 ;如果是 false 歉铝,返回 +0
數(shù)字 數(shù)字對應的值
字符串 將字符串解析成數(shù)字盈简。如果字符串中包含字母,返回 NaN 太示;如果是由數(shù)字字符組成的柠贤,轉換成數(shù)字
對象 Number(toPrimitive(vale))
  • toPrimitive 方法對不同類型返回的結果如下:
值類型 結 果
對象 如果對象的 valueOf 方法的結果是原始值,返回原始值类缤。如果對象的 toString方法返回原始值臼勉,就返回這個值;其他情況都返回一個錯誤
  • === 操作符餐弱,如果比較的兩個值類型不同宴霸,比較的結果就是 false 。如果比較的兩個值類型相同膏蚓,結果會根據(jù)下表判斷瓢谢。
類型(x) 結 果
數(shù)字 x和y數(shù)值相同(但不是 NaN ) true
字符串 x和y是相同的字符 true
布爾值 x和y都是 true 或 false true
對象 x和y引用同一個對象 true

ECMAScript 6

  • 用 let 替代 var 聲明變量
  • 常量 const PI = 3.141593;
  • 模板字面量
var name='123';
console.log(`my name is ${name}`);
  • 箭頭函數(shù)
let circleArea2 = (r) => 3.14 * r * r;
  • 函數(shù)的參數(shù)默認值
function sum(x=1,y=2,z=3){
    return x+y+z;
}
sum(4,6);//13
  • 聲明展開和剩余參數(shù)

在ES5中,我們可以用 apply() 函數(shù)把數(shù)組轉化為參數(shù)驮瞧。
ES6有了展開操作符( ... )氓扛。

var params = [3, 4, 5];
console.log(sum(...params));
等價于
var params = [3, 4, 5];
console.log(sum.apply(undefined, params));

在函數(shù)中,展開操作符( ... )也可以代替 arguments 论笔,當作剩余參數(shù)使用采郎。

function restParamaterFunction (x, y, ...a) {
    return (x + y) * a.length;
}
console.log(restParamaterFunction(1, 2, "hello", true, 7)); //輸出9;
等價于
function restParamaterFunction (x, y) {
    var a = Array.prototype.slice.call(arguments, 2);
    return (x + y) * a.length;
};
  • 增強的對象屬性

ES6引入了數(shù)組解構的概念,可以用來一次初始化多個變量

var [x,y] = ['a','b'];//初始化
[x,y] = [y,x];//值互換
  • 使用類進行面向對象編程
class Book { //{2}
    constructor (title, pages, isbn) {
        this.title = title;
        this.pages = pages;
        this.isbn = isbn;
    }
    printIsbn(){
        console.log(this.isbn);
    }
}
  1. 繼承
class ITBook extends Book { 
    constructor (title, pages, isbn, technology) {
        super(title, pages, isbn); 
        this.technology = technology;
    }
    printTechnology(){
        console.log(this.technology);
    }
}
let jsBook = new ITBook('學習JS算法', '200', '1234567890', 'JavaScript');
console.log(jsBook.title);
console.log(jsBook.printTechnology());
  1. 使用屬性存取器
class Person {
    constructor (name) {
        this._name = name; 
    }
    get name() { 
        return this._name;
    }
    set name(value) { 
        this._name = value;
    }
}
let lotrChar = new Person('Frodo');
console.log(lotrChar.name); //{4}
lotrChar.name = 'Gandalf'; //{5}
console.log(lotrChar.name);
lotrChar._name = 'Sam'; //{6}
console.log(lotrChar.name);
  1. 其他功能

ES6還有其他一些功能狂魔,包括列表迭代器尉剩、類型數(shù)組、 Set 毅臊、 Map 、 WeakSet 、 WeakMap 管嬉、模塊皂林、尾調用、 Symbol 蚯撩,等等

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末础倍,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子胎挎,更是在濱河造成了極大的恐慌沟启,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件犹菇,死亡現(xiàn)場離奇詭異德迹,居然都是意外死亡,警方通過查閱死者的電腦和手機揭芍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門胳搞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人称杨,你說我怎么就攤上這事肌毅。” “怎么了姑原?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵悬而,是天一觀的道長。 經常有香客問我锭汛,道長笨奠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任店乐,我火速辦了婚禮艰躺,結果婚禮上,老公的妹妹穿的比我還像新娘眨八。我一直安慰自己腺兴,他們只是感情好,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布廉侧。 她就那樣靜靜地躺著页响,像睡著了一般。 火紅的嫁衣襯著肌膚如雪段誊。 梳的紋絲不亂的頭發(fā)上闰蚕,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天,我揣著相機與錄音连舍,去河邊找鬼没陡。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的盼玄。 我是一名探鬼主播贴彼,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼埃儿!你這毒婦竟也來了器仗?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤童番,失蹤者是張志新(化名)和其女友劉穎精钮,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剃斧,經...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡轨香,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了悯衬。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弹沽。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖筋粗,靈堂內的尸體忽然破棺而出策橘,到底是詐尸還是另有隱情,我是刑警寧澤娜亿,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布丽已,位于F島的核電站,受9級特大地震影響买决,放射性物質發(fā)生泄漏沛婴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一督赤、第九天 我趴在偏房一處隱蔽的房頂上張望嘁灯。 院中可真熱鬧,春花似錦躲舌、人聲如沸丑婿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽羹奉。三九已至,卻和暖如春约计,著一層夾襖步出監(jiān)牢的瞬間诀拭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工煤蚌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留耕挨,地道東北人细卧。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像俗孝,于是被迫代替她去往敵國和親酒甸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line)赋铝,也就是一...
    悟名先生閱讀 4,149評論 0 13
  • 函數(shù)和對象 1、函數(shù) 1.1 函數(shù)概述 函數(shù)對于任何一門語言來說都是核心的概念沽瘦。通過函數(shù)可以封裝任意多條語句革骨,而且...
    道無虛閱讀 4,564評論 0 5
  • ??引用類型的值(對象)是引用類型的一個實例良哲。 ??在 ECMAscript 中,引用類型是一種數(shù)據(jù)結構助隧,用于將數(shù)...
    霜天曉閱讀 1,056評論 0 1
  • 第3章 基本概念 3.1 語法 3.2 關鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,128評論 0 21
  • 最近網站更新了一些需求筑凫,做了第三方登錄,總結了一些并村,也是第一次做巍实,有不足的地方歡迎指正!A埂棚潦! 申請過程就不說了,下...
    yi條咸魚閱讀 3,751評論 0 1