整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          web前端之JavaScript操作符上

          web前端之JavaScript操作符上



          CMAScript描述了一組用于操作數據值的操作符,包括算術操作符(如加號和減號)、位操作符、 關系操作符和相等操作符。

          ECMAScript 操作符能夠適用于很多值,例如字符串、數字值、布爾值,甚至對象。在應用于對象時,相應的操作符通常都會調用對象的valueOf()或toString()方法,以便取得可以操作的值。

          一、一元操作符

          只能操作一個值的操作符叫做一元操作符
          1. 遞增和遞減操作符
          遞增和遞減操作符直接借鑒自 C,而且各有兩個版本:前置型和后置型。前置型應該位于要操作的變量之前,而后置型則應該位于要操作的變量之后。

          在使用前置遞增操作符給一個數值加 1 時,要把兩個加號(++)放在這個數值變量前面:

          var age=29; 
          ++age;

          同理,前置遞減為:

          var age=29;
          --age;

          執行前置遞增和遞減操作時,變量的值都是在語句被求值以前改變的。

          var age=29;
          var anotherAge=--age + 2;
          alert(age); // 輸出28 
          alert(anotherAge); // 輸出30

          后置型遞增和遞減操作符的語法不變(仍然分別是++和--),只不過要放在變量的后面而不是前面。 后置遞增和遞減與前置遞增和遞減有一個非常重要的區別,即遞增和遞減操作是在包含它們的語句被求 值之后才執行的。

          var age=29;
          age++;

          把遞增操作符放在變量后面并不會改變語句的結果,因為遞增是這條語句的唯一操作。但是,當語 句中還包含其他操作時,上述區別就會非常明顯了。請看下面的例子:

          var num1=2;
          var num2=20;
          var num3=num1-- + num2; // 等于 22
          var num4=num1 + num2; // 等于 21

          在應用于不同的值時,遞增和遞減操作符遵循下列規則:

          • 在應用于一個包含有效數字字符的字符串時,先將其轉換為數字值,再執行加減1的操作。字 符串變量變成數值變量。
          • 在應用于一個不包含有效數字字符的字符串時,將變量的值設置為NaN,字符串變量變成數值變量。
          • 在應用于布爾值 false 時,先將其轉換為0再執行加減 1 的操作。布爾值變量變成數值變量。
          • 在應用于布爾值 true 時,先將其轉換為 1 再執行加減 1 的操作。布爾值變量變成數值變量。
          • 在應用于浮點數值時,執行加減 1 的操作。
          • 在應用于對象時,先調用對象的 valueOf()方法以取得一個可供操作的 值,然后對該值應用前述規則。如果結果是 NaN,則在調用 toString()方法后再應用前述規則,對象變量變成數值變量。
          var s1="2"; 
          var s2="z"; 
          var b=false; 
          var f=1.1; 
          var o={
            valueOf: function() { 
              return -1;
            } 
          };
          s1++; //值變成數值 3
          s2++; //值變成 NaN
          b++; //值變成數值 1
          f--; //值變成 0.10000000000000009(由于浮點舍入錯誤所致)
          o--; // 值變成數值-2



          二、位操作符

          位操作符用于在最基本的層次上,即按內存中表示數值的位來操作數值。

          對于有符號的整數,32 位中的前 31 位用于表示整數的值。第 32 位用于表示數值的符號:0 表示正 數,1 表示負數。這個表示符號的位叫做符號位,符號位的值決定了其他位數值的格式。其中,正數以 純二進制格式存儲,31 位中的每一位都表示 2 的冪。

          1. 按位非(NOT)

          按位非操作符由一個波浪線(~)表示,執行按位非的結果就是返回數值的反碼

          var num1=25;
          var num2=-num1 - 1; 
          alert(num2); // "-26"

          按位非操作的本質:操作數的負值減 1

          2. 按位與(AND)

          按位與操作符由一個和號字符(&)表示,它有兩個操作符數。從本質上講,按位與操作就是將兩 個數值的每一位對齊,然后根據下表中的規則,對相同位置上的兩個數執行 AND 操作:

          第一個數值的位 第二個數值的位 結果

          1 1 1

          1 0 0

          0 1 0

          0 0 0

          按位與操作只在兩個數值的對應位都是 1 時才返回 1,任何一位是 0,結果都是 0。

          var result=25 & 3; 6 
          alert(result); //1

          3. 按位或(OR)

          按位或操作符由一個豎線符號(|)表示,同樣也有兩個操作數。按位或操作遵循下面這個真值表。

          第一個數值的位 第二個數值的位 結果

          1 1 1

          1 0 1

          0 1 1

          0 0 0

          按位或操作在有一個位是 1 的情況下就返回 1,而只有在兩個位都是 0 的情況下才返回 0。

          var result=25 | 3; 
          alert(result); //27

          4. 按位異或(XOR)

          按位異或操作符由一個插入符號(^)表示,也有兩個操作數。以下是按位異或的真值表

          第一個數值的位 第二個數值的位 結 果

          1 1 0

          1 0 1

          0 1 1

          0 0 0

          按位異或與按位或的不同之處在于,這個操作在兩個數值對應位上只有一個 1 時才返回 1,如果對 應的兩位都是 1 或都是 0,則返回 0。

          var result=25 ^ 3;
          alert(result);    //26

          5. 左移

          左移操作符由兩個小于號(<<)表示,這個操作符會將數值的所有位向左移動指定的位數。

          如果將數值 2(二進制碼為 10)向左移動 5 位,結果就是 64(二進制碼為 1000000)

          var oldValue=2; // 等于二進制的10
          var newValue=oldValue << 5; // 等于二進制的1000000,十進制的64

          注意,左移不會影響操作數的符號位

          6. 有符號的右移

          有符號的右移操作符由兩個大于號(>>)表示,這個操作符會將數值向右移動,但保留符號位(即

          正負號標記)。有符號的右移操作與左移操作恰好相反,即如果將64向右移動5位,結果將變回 2:

          var oldValue=64; // 等于二進制的1000000
          var newValue=oldValue >> 5; // 等于二進制的10 ,即十進制的2

          同樣,在移位過程中,原數值中也會出現空位。只不過這次的空位出現在原數值的左側、符號位的 右側。而此時 ECMAScript 會用符號位的值來填充所有空位,以便得到一個完整的值。

          7. 無符號右移

          無符號右移操作符由 3 個大于號(>>>)表示,這個操作符會將數值的所有 32 位都向右移動。對正 數來說,無符號右移的結果與有符號右移相同。仍以前面有符號右移的代碼為例,如果將 64 無符號右移5位,結果仍然還是 2:

          var oldValue=64;// 等于二進制的1000000
          var newValue=oldValue >>> 5;// 等于二進制的10 ,即十進制的2

          但是對負數來說,情況就不一樣了。首先,無符號右移是以 0 來填充空位,而不是像有符號右移那 樣以符號位的值來填充空位。所以,對正數的無符號右移與有符號右移結果相同,但對負數的結果就不一樣了。其次,無符號右移操作符會把負數的二進制碼當成正數的二進制碼。而且,由于負數以其絕對值的二進制補碼形式表示,因此就會導致無符號右移后的結果非常之大。

          位運算符將其操作數當做32位的比特序列(由0和1組成),而不是十進制、十六進制或八進制數值。

          我們主要了解的有七種,分別是:&、|、^、~、<<、>>、>>>。

          按位與運算符

          按位與 & 運算符,對兩個 32 位表達式的每一位執行按位與運算。如果a 和 b 都為1 則結果為1,否則結果為0。

          示例:

          下面演示如何使用& 運算符:

          console.log(1 & 3);  // 1

          1 & 3 的結果為1,1的二進制表示為00000001,3的二進制表示為00000011,根據 & 的規則,相同得1,不同得0,可以得出結果為 00000001,即1。

          按位或運算符

          按位或 | 運算符,只要a 和 b有一個為1,則結果為1,否則結果為0。

          示例:

          | 運算符和 & 運算符的區別在于,只要有一個操作數為1,結果就為1。同樣是1 | 3 ,結果輸出為3。

          console.log(1 | 3);  // 3

          1的二進制表示為00000001,3的二進制表示為00000011,根據 | 的規則,得到00000011,轉為十進制,結果為3。

          按位異或運算符

          按位異或 ^ 運算符,當 a 和 b 不相同時,結果為1,否則結果為0:

          示例:

          ^ 運算符和 | 運算符有點類似,不同在于,如果操作位都為1,則結果為0。

          console.log(1 ^ 3);  // 2

          1的二進制表示為00000001,3的二進制表示為00000011,根據 ^ 的規則,得到00000010,轉為十進制,結果為2。

          按位非運算符

          按位非 ~ 運算符,對位求反,將1變0,將0變1,也就是求二進制的反碼。

          示例:

          例如 1的二進制表示為00000001,取反得到11111110,轉為十進制,得到-2:

          console.log(~1);  // -2
          console.log(~0);  // -1
          console.log(~3);  // -4

          右移運算符

          右移 >> 運算符 ,使指定值的二進制所有位都右移規定的次數,對于其移動規則只需記住符號位不變,左邊補上符號位即按二進制形式把所有的數字向右移動對應的位數,低位移出(舍棄),高位的空位補符號位,即正數補零,負數補1。

          示例:

          例如1的二進制為00000001,所以1>>1的結果為1:

          console.log(1 >> 1);     // 0
          console.log(8 >> 2);     // 2
          console.log(64 >> 2);    // 16
          console.log(128 >> 1);   // 64

          左移運算符

          左移 << 運算符,使指定值的二進制所有位都左移規定的次數,對于其移動規則只需記住丟棄最高位,0補最低位即按二進制形式把所有的數字向左移動對應的位數,高位移出(舍棄),低位的空位補零。

          示例:

          console.log(1 << 1);     // 2
          console.log(8 << 2);     // 32
          console.log(64 << 2);    // 256

          無符號右移

          無符號右移 >>>,該操作符會將第一個操作數向右移動指定的位數。向右被移出的位被丟棄,左側用0填充。因為符號位變成了 0,所以結果總是非負的。

          示例:

          console.log(-5 >>> 1);    // 2147483645
          console.log(-8 >>> -2);   // 8
          console.log(-24 >>> 2);   // 1073741818

          動手小練習

          1.分別用七種按位運算符輸出一些自定義的內容,然后有一個更進一步的認識與了解。

          2.請說出下列代碼的輸出結果:

          用 Vim 時有一個非常重要的一點需要注意,那就是按鍵的功能取決于編輯器當前的“模式”。 -- Himanshu Arora

          本文導航
          • -基本操作 …… 14%

          • -方向鍵 …… 19%

          • -瀏覽文檔 …… 31%

          • -插入文本 …… 37%

          • -特殊插入 …… 42%

          • -刪除文本 …… 46%

          • -簡單替換文本 …… 52%

          • -復制/粘貼文本 …… 55%

          • -撤銷/重做操作 …… 61%

          • -搜索和替換 …… 64%

          • -書簽 …… 73%

          • -選擇文本 …… 77%

          • -改動選中文本 …… 80%

          • -保存并退出 …… 85%

          • -下載 Vim 快捷鍵速查表 …… 92%

          編譯自: https://www.maketecheasier.com/vim-keyboard-shortcuts-cheatsheet/

          作者: Himanshu Arora

          譯者: martin2011qi

          本文是 Vim 用戶指南[1] 系列的其中一篇:

          • Vim 初學者入門指南[2]

          • Vim 快捷鍵速查表

          • 5 個針對有經驗用戶的 Vim 技巧[3]

          • 3 個針對高級用戶的 Vim 編輯器實用技巧[4]

          Vim 編輯器是一個基于命令行的工具,是傳奇編輯器 vi 的增強版。盡管圖形界面的富文本編輯有很多,但是熟悉 Vim 對于每一位 Linux 的使用者都能有所幫助——無論你是經驗豐富的系統管理員,還是剛上手樹莓派的新手用戶。

          這個輕量級的編輯器是個非常強大的工具。在有經驗的使用者手中,它能完成不可思議的任務。除了常規的文本編輯功能以外,它還支持一些進階特性。例如,基于正則表達式的搜索和替換、編碼轉換,以及語法高亮、代碼折疊等的編程特性。

          使用 Vim 時有一個非常重要的一點需要注意,那就是按鍵的功能取決于編輯器當前的“模式”。例如,在“普通模式”輸入字母j時,光標會向下移動一行。而當你在“插入模式”下輸入字符,則只是正常的文字錄入。

          下面就是速查表,以便于你充分利用 Vim。

          基本操作

          快捷鍵功能
          Esc從當前模式轉換到“普通模式”。所有的鍵對應到命令。
          i“插入模式”用于插入文字。回歸按鍵的本職工作。
          :“命令行模式” Vim 希望你輸入類似于保存該文檔命令的地方。

          方向鍵

          快捷鍵功能
          h光標向左移動一個字符
          jCtrl + J光標向下移動一行
          kCtrl + P光標向上移動一行
          l光標向右移動一個字符
          0(數字 0)移動光標至本行開頭
          $移動光標至本行末尾
          ^移動光標至本行第一個非空字符處
          w向前移動一個詞 (上一個字母和數字組成的詞之后)
          W向前移動一個詞 (以空格分隔的詞)
          5w向前移動五個詞
          b向后移動一個詞 (下一個字母和數字組成的詞之前)
          B向后移動一個詞 (以空格分隔的詞)
          5b向后移動五個詞
          G移動至文件末尾
          gg移動至文件開頭

          瀏覽文檔

          快捷鍵功能
          (跳轉到上一句
          )跳轉到下一句
          {跳轉到上一段
          }跳轉到下一段
          [[跳轉到上一部分
          ]]跳轉到下一部分
          []跳轉到上一部分的末尾
          ][跳轉到上一部分的開頭

          插入文本

          快捷鍵功能
          a在光標后插入文本
          A在行末插入文本
          i在光標前插入文本
          o(小寫字母 o)在光標下方新開一行
          O(大寫字母 O)在光標上方新開一行

          特殊插入

          快捷鍵功能
          :r [filename]在光標下方插入文件 [filename] 的內容
          :r ![command]執行命令 [command] ,并將輸出插入至光標下方

          刪除文本

          快捷鍵功能
          x刪除光標處字符
          dw刪除一個詞
          d0刪至行首
          d$刪至行末
          d)刪至句末
          dgg刪至文件開頭
          dG刪至文件末尾
          dd刪除該行
          3dd刪除三行

          簡單替換文本

          快捷鍵功能
          r{text}將光標處的字符替換成 {text}
          R進入覆寫模式,輸入的字符將替換原有的字符

          復制/粘貼文本

          快捷鍵功能
          yy復制當前行至存儲緩沖區
          ["x]yy復制當前行至寄存器 x
          p在當前行之后粘貼存儲緩沖區中的內容
          P在當前行之前粘貼存儲緩沖區中的內容
          ["x]p在當前行之后粘貼寄存器 x 中的內容
          ["x]P在當前行之前粘貼寄存器 x 中的內容

          撤銷/重做操作

          快捷鍵功能
          u撤銷最后的操作
          Ctrl+r重做最后撤銷的操作

          搜索和替換

          快捷鍵功能
          /search_text檢索文檔,在文檔后面的部分搜索 search_text
          ?search_text檢索文檔,在文檔前面的部分搜索 search_text
          n移動到后一個檢索結果
          N移動到前一個檢索結果
          :%s/original/replacement檢索第一個 “original” 字符串并將其替換成 “replacement”
          :%s/original/replacement/g檢索并將所有的 “original” 替換為 “replacement”
          :%s/original/replacement/gc檢索出所有的 “original” 字符串,但在替換成 “replacement” 前,先詢問是否替換

          書簽

          快捷鍵功能
          m {a-zA-Z}在當前光標位置設置書簽,書簽名可用一個大小寫字母({a-zA-Z})
          :marks列出所有書簽
          {a-zA-Z}跳轉到書簽 {a-zA-Z}

          選擇文本

          快捷鍵功能
          v進入逐字可視模式
          V進入逐行可視模式
          Esc退出可視模式

          改動選中文本

          快捷鍵功能
          ~切換大小寫
          d刪除一個詞
          c變更
          y復制
          >右移
          <左移
          !通過外部命令進行過濾

          保存并退出

          快捷鍵功能
          :q退出 Vim,如果文件已被修改,將退出失敗
          :w保存文件
          :w new_name用 new_name 作為文件名保存文件
          :wq保存文件并退出 Vim
          :q!退出 Vim,不保存文件改動
          ZZ退出 Vim,如果文件被改動過,保存改動內容
          ZQ與 :q! 相同,退出 Vim,不保存文件改動

          下載 Vim 快捷鍵速查表

          僅僅是這樣是否還不足以滿足你?別擔心,我們已經為你整理好了一份下載版的速查表,以備不時之需。

          點此下載(英文):http://www.maketecheasier.com/cheatsheet/vim-keyboard-shortcuts-cheatsheet/


          via: https://www.maketecheasier.com/vim-keyboard-shortcuts-cheatsheet/

          作者:Himanshu Arora[6] 譯者:martin2011qi 校對:wxy

          本文由 LCTT[7] 原創編譯,Linux中國 榮譽推出

          [1]: https://www.maketecheasier.com/series/vim-user-guide/

          [2]: https://linux.cn/article-8143-1.html

          [3]: https://www.maketecheasier.com/vim-tips-tricks-for-experienced-users/

          [4]: https://www.maketecheasier.com/vim-tips-tricks-advanced-users/

          [5]: http://www.maketecheasier.com/cheatsheet/vim-keyboard-shortcuts-cheatsheet/

          [6]: https://www.maketecheasier.com/author/himanshu/

          [7]: https://github.com/LCTT/TranslateProject


          主站蜘蛛池模板: 日韩精品无码一区二区视频| 在线日产精品一区| 无码人妻久久久一区二区三区| 国产激情视频一区二区三区| 国产福利一区二区三区| 久久se精品一区精品二区国产| 国产在线视频一区| 玩弄放荡人妻一区二区三区| 夜夜嗨AV一区二区三区| 影院成人区精品一区二区婷婷丽春院影视 | 亚洲av无码一区二区三区在线播放| 国产精品久久无码一区二区三区网 | 亚洲av成人一区二区三区| 亚洲香蕉久久一区二区| 国产一区二区三区不卡在线看| 精品国产一区二区三区2021| 精品一区二区三区四区在线播放| 亚洲码欧美码一区二区三区| 国产A∨国片精品一区二区| 中文字幕一区一区三区| 久久国产精品免费一区二区三区| 91久久精品午夜一区二区| 国产成人一区二区三区高清| 色偷偷一区二区无码视频| 国产欧美一区二区精品仙草咪| 中日韩一区二区三区| 日韩中文字幕精品免费一区| AV怡红院一区二区三区| 无码播放一区二区三区| jizz免费一区二区三区| 日韩精品一区在线| 国产成人亚洲综合一区| 78成人精品电影在线播放日韩精品电影一区亚洲 | 国产亚洲一区二区三区在线不卡| 免费一本色道久久一区| 无码播放一区二区三区| 精品熟人妻一区二区三区四区不卡| 久久99久久无码毛片一区二区| 成人免费视频一区二区三区| 国产福利微拍精品一区二区| 99久久人妻精品免费一区|