javascript重點-表達式和運算符

来源:http://www.cnblogs.com/wusheng2016/archive/2017/02/07/6374503.html
-Advertisement-
Play Games

一、js表達式 定義:表達式是指能計算出值得任何可用程式單元。 ——wiki 表達式是js一種短語,可使js解釋器用來產生一個值。 ——js《權威指南》 1.原始表達式。 常量/直接量: 3.14/ "test" 等 關鍵字: null,this,true,false 等 變數: i,k,j 等 復 ...


一、js表達式

  定義:表達式是指能計算出值得任何可用程式單元。  ——wiki

     表達式是js一種短語,可使js解釋器用來產生一個值。  ——js《權威指南》

  1.原始表達式。

   常量/直接量: 3.14/ "test" 等

   關鍵字: null,this,true,false 等

     變數: i,k,j 等

   複合表達式:原始表達式和原始表達式之間用運算符連接可以組成一個複合表達式。

   例如: 10 * 20 這就是一個複合表達式

  2.(數組、對象的)初始化表達式。

     例如:

[1,2]  等價於  new Array(1,2);

[1,,,2]  等價於  new Array(1,undefined,undefined,2);

{x:1,y:2} 等價於  var obj = new Object();

           obj.x = 1;obj.y = 2;

 

  3.函數表達式。

   var fn = function(){};

   或者:
   (function(){ console.log("hello") })();

   如果你不理解函數表達式後面還會有對應的介紹。

  4.屬性訪問表達式。

   var obj = {x:1}

   我們可以通過  obj.x 或者 obj["x"]來訪問它的屬性,這一類表達式就稱之為屬性訪問表達式。

  5.調用表達式。

   func();  來調用一個函數,這樣的表達式就稱之為調用表達式。

  6.對象創建表達式。

   例如:

   new Func(1,2);我們可以傳參,如果沒有參數我們也可以new Object;創建一個空的對象這樣也是合法的。

 

二、js運算符(一般用於表達式之間進行一些運算)。

  1.按照運算符的操作數的數量:

   一元運算符: +num

   二元運算符: a + b

   三元運算符: c?a:b

  2.按照功能區分:

   賦值:x += 1 (或者-=,=等)

   比較:a == b

   算數:a - b

   位: a | b

   邏輯: exp1 && exp2 (或與非)

   字元串:“a” + “b”

   特殊: delete obj.x

   下麵我們對特殊運算符展開來講:

   條件運算符:var c = true?1:2    //c=1

   逗號運算符:var val = (1,2,3)  // val = 3  從左到右依次計算,取最後的

   delete運算符:就是刪除對象上的屬性。

   --例如:var obj = {x:1}

       obj.x  //1

       delete obj.x

       obj.x  //undefined

    從IE9開始,我們可以給對象設置configurable標簽,當configurable:true時屬性才可以被delete掉

    例:var obj = {}

    Object.defineProperty(obj, 'x', {

      configurable:false,

      value:1

    });

    delete obj.x

    obj.x  //1  

  3. in 運算符。

   例:window.x = 1;那我們想知道window到底有沒有x呢,我們就可以用 in

     ”x“ in window;    // true 

  4. instanceof  和 typeof 我們在上一章詳細的介紹過,如果忘記了可以去看一下。

  5. new運算符

   比如說我們創建一個函數構造器:function Foo(){}

   Foo.prototype.x = 1;

   我們可以用new運算符就可以創建一個對象obj

   var obj = new Foo();

   這樣obj.x;  //1 我們就可以從它的構造器上的prototype屬性上拿到 1

   我們可以通過 obj.hasOwnProperty("x"); //false 來判斷這個屬性到底是對象上的還是對象的原型上的

   obj._proto_拿到它的原型,obj._proto_.hasOwnProperty("x");  //true 說明是原型上的

  6.this 運算符。

   this; //window(瀏覽器)

   var obj = {

    func:function(){

      return this;

    }

   }

   obj.func(); // obj

   this運算符也是比較特殊的這個我們後面會詳細講。

  7.void運算符。

   void 0 //undefined

   void (0) //undefined

   void無論後面的操作數是多少,返回的都是undefined。

  8.運算符的優先順序,也是建議大家去看一下,更有助於大家讀懂複雜的表達式。


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

-Advertisement-
Play Games
更多相關文章
  • Netty 提供非同步的、事件驅動的網路應用程式框架和工具,用以快速開發高性能、高可靠性的網路伺服器和客戶端程式 本文對Netty做了一個總體概覽 ...
  • 今天我們來講一下適配器模式。下麵,我們描述一個場景: 不管是籃球隊還是足球隊,都會有外援的,在隊內訓練與安排戰術的時候,外援可能聽不懂漢語的,那麼,他們怎麼交流呢,這就需要一個翻譯了。其實,這個翻譯就起到了一個適配器的效果。 何為適配器模式:將一個介面轉換成為客戶希望的另外一個介面,使得原本由於介面 ...
  • 閱讀目錄 前言 回顧 本地的一致性 領域事件發佈出現異常 訂閱者處理出現異常 結語 一、前言 上篇中我們初步運用了領域事件,其中還有一些問題我們沒有解決,所以實現是不健壯的,下麵先來回顧一下。 二、回顧 先貼一下上篇中的遺留的問題: 不知道大家有沒有發現這裡代碼上的一個問題,就是DomainEven ...
  • 今天我們來將狀態模式,首先,我們來描述下麵一個場景: 一、案例: 在工作過程中,根據時間段的不同,我們工作的狀態也有所不同,下麵,我們用簡單的控制台應用程式,來實現一下這個場景。 客戶端 二、演繹 1、第一步演繹 看到上面用代碼描述的場景,對於我們學了好多設計模式的小伙伴來講,是不是顯得特別的挫,最 ...
  • 什麼是微服務? 微服務存在多種定義。 如果搜索 Internet,會發現許多有用的資源,這些資源提供了自己的觀點和定義。 但在微服務的以下大部分特性上,已廣泛達成共識: 封裝客戶方案或業務方案。 你要解決什麼問題? 由小型工程團隊開發。 使用任何編程語言編寫並使用任何框架。 由獨立控製版本、部署及縮 ...
  • 1.module.export可以公共方法,也可以公共變數 2. 調用公共方法的時候,寫預設參數的時候可以這樣: function wxReq(method, url, header, data, successCb, failCb, fail, that) {} 調用的時候可以 wxReq("GE ...
  • 原生JavaScript實現AJAX、JSONP 相信大多數前端開發者在需要與後端進行數據交互時,為了方便快捷,都會選擇JQuery中封裝的AJAX方法,但是有些時候,我們只需要JQuery的AJAX請求方法,而其他的功能用到的很少,這顯然是沒必要的。 其實,原生JavaScript實現AJAX並不 ...
  • 職責鏈模式 使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關係,將這些對象連成一條鏈,並沿著這條鏈傳遞該請求,直到有一個對象處理它為止。 書里的訂單的例子 假設我們負責一個售賣手機的電商網站,經過分別交納500元定金和200元定金的兩輪預定(訂單已在此時生成),現在已經到了正式購 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...