<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          前端-JavaScript基礎(chǔ)知識

          共 5541字,需瀏覽 12分鐘

           ·

          2021-10-18 10:48

          作者:編程碼農(nóng)

          來源:SegmentFault 思否社區(qū)

          簡介

          什么是JavaScript?

          JavaScript ( JS ) 是一種具有函數(shù)優(yōu)先的輕量級,解釋型或即時編譯型的編程語言。

          函數(shù)優(yōu)先:編程語言中的函數(shù)可以被當(dāng)作參數(shù)傳遞給其他函數(shù),可以作為另一個函數(shù)的返回值,還可以被賦值給一個變量。

          解釋型:對標(biāo)編譯型語言,編譯型需預(yù)先將源碼編成中間碼,再由解釋器解釋運行。解釋型不需要預(yù)先編譯,在程序在運行時才由解釋器翻譯運行。

          JavaScript 的標(biāo)準(zhǔn)是ECMAScript截至 2012 年,所有的現(xiàn)代瀏覽器都完整的支持 ECMAScript 5.1,舊版本的瀏覽器至少支持 ECMAScript 3 標(biāo)準(zhǔn)。

          我們所熟知的ES6是在2015年6月17日,由ECMA國際組織發(fā)布的ECMAScript 的第六版,該版本正式名稱為 ECMAScript 2015。

          https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Language_Resources

          使用場景

          互聯(lián)網(wǎng)的興起,JavaScript的使用范圍已經(jīng)超出了瀏覽器。

          1. 瀏覽器平臺。HTML5的出現(xiàn),瀏覽器本身的功能越來越強(qiáng),JavaScript 因此得以調(diào)用許多系統(tǒng)功能,如操作本地文件、操作圖片、調(diào)用攝像頭和麥克風(fēng),可以開發(fā)更多富客戶端產(chǎn)品。

          2. 服務(wù)端應(yīng)用。node的出現(xiàn)使得 JavaScript 可以用于開發(fā)服務(wù)器端應(yīng)用,也使得JavaScript成為一門可以同時開發(fā)前后端的語言。

          3. 移動應(yīng)用。js也正在成為手機(jī)應(yīng)用的開發(fā)語言,比如:React Native 項目則是將 JavaScript 寫的組件,編譯成原生組件。

          4. 桌面應(yīng)用。JavaScript甚至可以開發(fā)桌面應(yīng)用,比如electronjs。

          5. 數(shù)據(jù)庫操作。在一些Nosql數(shù)據(jù)都是支持JavaScript作為操作語言,像mongodb。

          基本語法

          變量

          變量是對值的引用,JavaScript 的變量名區(qū)分大小寫,Aa是兩個不同的變量。
          var total; // 未賦值的變量是 undefined,它是個特殊的值,表示無定義。
          total = 1;
          var a,b; // 一個var后可以聲明多個變量。

          變量提升
          你可能很奇怪,執(zhí)行下面代碼沒有報錯。由于JavaScript引擎工作方式是先解析代碼,獲取所有被聲明的變量,換句話說就是所有的變量的聲明語句,都被提升到代碼的頭部。
          console.log(a);
          var a = 1;

          變量規(guī)則
          • 第一個字符任意 Unicode 字母(包括英文字母和其他語言的字母),以及美元符號($)和下劃線(_

          • 第二個字符及后面的字符,除了 Unicode 字母、美元符號和下劃線,還可以用數(shù)字0-9。


          另外中文也可以聲明變量,下面保留字除外
          arguments、break、case、catch、class、const、continue、debugger、default、delete、do、else、enum、eval、export、extends、false、finally、for、function、if、implements、import、in、instanceof、interface、let、new、null、package、private、protected、public、return、static、super、switch、this、throw、true、try、typeof、var、void、while、with、yield。

          語句

          JavaScript程序的執(zhí)行單位行,一般情況一行就是一條語句,如果一行要寫多個語句我們使用;表示語句結(jié)束。
          var total = 1 + 1; // 聲明了一個變量total,然后將1+1的運算結(jié)果賦值給它。

          注釋
          // 這是單行注釋

          /*
           這是
           多行
           注釋
          */

          區(qū)塊
          JavaScript使用大括號將多條語句包裹起來表示一個區(qū)塊,注意var聲明的變量不構(gòu)成單獨的作用域,這里區(qū)別于java。
          {
            var a = 1;
          }
          a // 1

          條件語句
          // if結(jié)構(gòu)
          if (m === 1){ // 往往由一個條件表達(dá)式產(chǎn)生的
              console.log('ok')
          }
          // 或者
          if (bool) console.log('ok');

          // if/else結(jié)構(gòu)
          if (m === 1){
            語句;
          }else{
              語句;  


          // if/else if.../else 結(jié)構(gòu) m==1 m==2 其它
          if (m === 1) {
          else if(m === 2){
          }else {
          }

          switch 結(jié)構(gòu)
          switch (m) {
            case 1:
              // ...
              break;
            case 2:
              // ...
              break;
            default:
              // ...
          }

          注意區(qū)別 ==與===
          使用==比較兩個變量時,會發(fā)生隱式類型轉(zhuǎn)換,例如,自動將字符串類型轉(zhuǎn)換為數(shù)字類型。
          為了避免隱式轉(zhuǎn)換帶來的問題,我們都是用=== 進(jìn)行嚴(yán)格進(jìn)行比較。

          三元運算符
          三元運算符也可以用于邏輯判斷。
          (條件) ? 表達(dá)式1 : 表達(dá)式2

          循環(huán)語句
          var i = 0;
          while (i < 100) {
            console.log('i 當(dāng)前為:' + i);
            i = i + 1;
          }
          // 區(qū)別上面,它至少會執(zhí)行一次
          var i = 0;
          do {
            console.log('i 當(dāng)前為:' + i);
          while (i < 100);

          for循環(huán)語句
          • 初始化表達(dá)式:確定循環(huán)變量的初始值,只在循環(huán)開始時執(zhí)行一次。

          • 條件表達(dá)式:每輪循環(huán)開始時,都要執(zhí)行這個條件表達(dá)式,只有值為真,才繼續(xù)進(jìn)行循環(huán)。

          • 遞增表達(dá)式:每輪循環(huán)的最后一個操作,通常用來遞增循環(huán)變量。


          for (初始化表達(dá)式; 條件; 遞增表達(dá)式) {
            語句
          }

          break 和 continue
          break語句用于跳出代碼塊或循環(huán),continue是結(jié)束當(dāng)前循環(huán),跳到下一次。

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

          null和undefined
          • 變量沒有初始化:undefined。

          • 變量不可用:null。


          數(shù)值
          整數(shù)和浮點數(shù),JavaScript 內(nèi)部,所有數(shù)字都是以64位浮點數(shù)形式儲存,即使整數(shù)也是如此。
          1 === 1.0 // true

          數(shù)值精度:根據(jù)國際標(biāo)準(zhǔn) IEEE 754,JavaScript 浮點數(shù)的64個二進(jìn)制位,從最左邊開始,是這樣組成的。
          • 第1位:符號位,0表示正數(shù),1表示負(fù)數(shù)

          • 第2位到第12位(共11位):指數(shù)部分

          • 第13位到第64位(共52位):小數(shù)部分(即有效數(shù)字)


          數(shù)值范圍:64位浮點數(shù)的指數(shù)部分的長度是11個二進(jìn)制位,意味著指數(shù)部分的最大值是2047(2的11次方減1)超出的范圍不能表示。
          數(shù)值進(jìn)制:
          • 十進(jìn)制:沒有前導(dǎo)0的數(shù)值。

          • 八進(jìn)制:有前綴0o0O的數(shù)值,或者有前導(dǎo)0、且只用到0-7的八個阿拉伯?dāng)?shù)字的數(shù)值。

          • 十六進(jìn)制:有前綴0x0X的數(shù)值。

          • 二進(jìn)制:有前綴0b0B的數(shù)值。


          NaN
          NaN是 JavaScript 的特殊值,表示“非數(shù)字”(Not a Number),主要出現(xiàn)在將字符串解析成數(shù)字出錯的場合。
          字符串
          由單雙引號包裹在一起的字符,就是字符串。
          單引號字符串的內(nèi)部,可以使用雙引號。雙引號字符串的內(nèi)部,可以使用單引號。
          'abc' "abc" "'a'" // 字符串

          // 字符串換行
          var str = 'String \
          String \
          String'
          ;

          轉(zhuǎn)義符:
          • \0 :null(\u0000
          • \b :后退鍵(\u0008
          • \f :換頁符(\u000C
          • \n :換行符(\u000A
          • \r :回車鍵(\u000D
          • \t :制表符(\u0009
          • \v :垂直制表符(\u000B
          • \' :單引號(\u0027
          • \" :雙引號(\u0022
          • \\ :反斜杠(\u005C
          字符集:javaScript 使用 Unicode 字符集。JavaScript 引擎內(nèi)部,所有字符都用 Unicode 表示。
          對象
          var obj = { // 對象聲明
            a: '1',
            b: '2'
          };

          // 對象屬性讀取
          obj.a 
          obj['a']

          // 刪除對象屬性
          delete obj.a

          // 判斷屬性是否存在
          'a' in obj 

          //對象遍歷
          for (var i in obj) {
            console.log('鍵名:', i);
            console.log('鍵值:', obj[i]);
          }

          函數(shù)
          function 關(guān)鍵字聲明。
          function foo(s) {
            console.log(s);
          }
          // 表達(dá)式形式
          var foo = function(s) {
            console.log(s);
          };

          Function 構(gòu)造函數(shù)
          var add = new Function(
            'x',
            'y',
            'return x + y'
          );

          // 等同于
          function add(x, y) {
            return x + y;
          }

          函數(shù)名提升:JavaScript 引擎將函數(shù)名視同變量名,所以采用function命令聲明函數(shù)時,整個函數(shù)會像變量聲明一樣,被提升到代碼頭部。
          foo();
          function foo() {console('ok')}

          JavaScript函數(shù)知識點還是蠻多的,后面針對函數(shù)這一塊單獨整理。
          數(shù)組
          數(shù)組屬于一種特殊的對象。
          typeof [1, 2, 3] // "object"

          length:JavaScript 使用一個32位整數(shù),保存數(shù)組的元素個數(shù)。這意味著,數(shù)組成員最多只有 4294967295 個(2^32 - 1)個,也就是說length屬性的最大值就是 4294967295。
          數(shù)組遍歷
          var a = [1, 2, 3];
          for (var i in a) {
            console.log(a[i]);
          }

          小結(jié)

          本文要點回顧,歡迎留言交流。
          • JavaScript介紹。
          • JavaScript基本語法。
          • 數(shù)據(jù)類型。


          點擊左下角閱讀原文,到 SegmentFault 思否社區(qū) 和文章作者展開更多互動和交流,掃描下方”二維碼“或在“公眾號后臺回復(fù)“ 入群 ”即可加入我們的技術(shù)交流群,收獲更多的技術(shù)文章~

          - END -


          瀏覽 50
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久久久久久九九九九 | 国产一级电影中文 | 黄色免费观看视频 | 九九网站| 亚洲免费在线视频观看 |