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

来源:https://www.cnblogs.com/cjrfan/archive/2018/05/23/9076546.html
-Advertisement-
Play Games

第 1 章 JavaScript簡介 使用 Node.js 搭建 Web 伺服器 JavaScript 的類型有數字、字元串、布爾值、函數和對象。還有 undefined 和 null ,以及數組、日期和正則表達式。 操作符 .cnblogs markdown table th:nth child( ...


第 1 章 JavaScript簡介

  • 使用 Node.js 搭建 Web 伺服器

    npm install http-server -g
    http-server
  • JavaScript 的類型有數字、字元串、布爾值、函數和對象。還有 undefined 和 null ,以及數組、日期和正則表達式。

  • 操作符

    算數操作符 描述
    + 加法
    - 減法
    * 乘法
    / 除法
    % 取餘
    ++ 遞增
    -- 遞減

    賦值操作符 描述
    = 賦值
    += 加/賦值 (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 操作符,可以刪除對象里的屬性

    數值類型 轉換成布爾值
    undefined false
    null false
    布爾值 true是 true ,false是 false
    數字 +0 、 -0 和 NaN 都是 false ,其他都是 true
    字元串 如果字元串是空的(長度是0)就是 false ,其他都是 true
    對象 true

  • 相等操作符( == 和 === )
類型(x) 類型(y) 結 果
null undefined true
undefined null true
數字 字元串 x == toNumber(y)
字元串 數字 toNumber(x) == y
布爾值 任何類型 toNumber(x) == y
任何類型 布爾值 x == toNumber(y)
字元串或數字 對象 x == toPrimitive(y)
對象 字元串或數字 toPrimitive(x) == y

  • 如果x和y是相同類型,JavaScript會比較它們的值或對象值。其他沒有列在這個表格中的情況
    都會返回 false 。
  • toNumber 和 toPrimitive 方法是內部的,並根據以下表格對其進行估值。
  • toNumber 方法對不同類型返回的結果如下:

值類型 結 果
undefined NaN
null +0
布爾值 如果是 true ,返回 1 ;如果是 false ,返回 +0
數字 數字對應的值
字元串 將字元串解析成數字。如果字元串中包含字母,返回 NaN ;如果是由數字字元組成的,轉換成數字
對象 Number(toPrimitive(vale))

  • toPrimitive 方法對不同類型返回的結果如下:

值類型 結 果
對象 如果對象的 valueOf 方法的結果是原始值,返回原始值。如果對象的 toString方法返回原始值,就返回這個值;其他情況都返回一個錯誤
  • === 操作符,如果比較的兩個值類型不同,比較的結果就是 false 。如果比較的兩個值類型相同,結果會根據下表判斷。

#

類型(x) 結 果
數字 x和y數值相同(但不是 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}`);
  • 箭頭函數

    let circleArea2 = (r) => 3.14 * r * r;
  • 函數的參數預設值

    function sum(x=1,y=2,z=3){
    return x+y+z;
    }
    sum(4,6);//13
  • 聲明展開和剩餘參數

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

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

在函數中,展開操作符( ... )也可以代替 arguments ,當作剩餘參數使用。

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引入了數組解構的概念,可以用來一次初始化多個變數

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());
  2. 使用屬性存取器

    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);
  3. 其他功能

ES6還有其他一些功能,包括列表迭代器、類型數組、 Set 、 Map 、 WeakSet 、 WeakMap 、模
塊、尾調用、 Symbol ,等等


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、 react-redux 和 redux是兩個東西。在做react項目的時候,一般用react-redux和redux搭配起來開發。redux主要是做數據、狀態的管理,而react-redux主要是方便數據redux在react使用。 二、源碼解析 1)、 入口文件index.js 2)、Pro ...
  • ‘\r'是回車,前者使游標到行首,(carriage return)'\n'是換行,後者使游標下移一格,(line feed)\r 是回車,return\n 是換行,newline對於換行這個動作:unix下一般只有一個0x0A表示換行("\n"),windows下一般都是0x0D和0x0A兩個字元 ...
  • 筆者昨天下午臨走前安裝了vs 2017想要運行一下項目的NET後端來讓本機的前端直接對接後端,但是沒註意到運行vs後IIS直接占用了本機的80埠。第二天跑nodeJS的時候直接Error: listen EACCES 0.0.0.80報錯 筆者總結了一下遇到埠報錯的問題到解決問題的始末,遇到埠 ...
  • 我們在使用npm install 安裝模塊或插件的時候,有兩種命令把他們寫入到 package.json 文件裡面去,比如: --save-dev(-D) --save(-S) 在 package.json 文件裡面提現出來的區別就是,使用 --save-dev 安裝的 插件,被寫入到 devDep ...
  • 內容:NPM介紹,安裝web框架模塊,一些基本命令#####介紹NPM是隨同NodeJS一起安裝的包管理工具,能解決NodeJS代碼部署上的很多問題,常見的使用場景有以下幾種: • 允許用戶從NPM伺服器下載別人編寫的第三方包到本地使用。 • 允許用戶從NPM伺服器下載並安裝別人編寫的命令行程式到本 ...
  • 一:html文檔標簽結構 <html></html><!--文檔片頭信息,表示文檔內容是用什麼標簽寫的。--> <head></head><!--head是網頁定義網頁頭部信息,該信息不會顯示在網頁中,head標簽裡面可以嵌入其它標簽--> <title></title> <!--title標題標簽 ...
  • 1.效果圖如下: 2.代碼如下: ...
  • 其實是一種利用符號進行的類型轉換,轉換成數字類型~~true == 1~~false == 0~~"" == 0~~[] == 0~~undefined ==0~~!undefined == 1~~null == 0~~!null == 1 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...