<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [toc] # 題1、什么是全局變量?什么是局部變量? 答: 局部變量: 1.定義在函數內變量 2.只能在函數中使用,并且只有在調用函數時存在,函數執行完之后變量就銷毀了(流星一樣,一劃就沒了)。 全局變量: 1.定義在函數外的變量 2. 在所有地方都可以使用,并且變量的值一直存在(像恒星一樣,一直存在)。 ~~~js var a = 20 // 全局變量 function abc() { var b = 10 a = 30 // 能改 } function ccc() { var b = 10 a++; b++ } function dd() { var a // 可以,局部變量 a a = 200 console.log( a ) // 200 } console.log( b ) // undefined ~ console.log( a ) // 20 abc() console.log(b) // undefined ~~~ console.log(a) // 30 ccc() ccc() console.log(b) // undefined ~~~~ console.log(a) // 32 dd() console.log( a ) // 32 ~~~ # 題2、定義變量可以使用 let 和 var 和 const,那它們有什么區別? 答: let和 var 定義的是變量,值可以改變。 const 定義的是常量:值不可以改變。 var 1. 能定義全局變量和局部變量 2. 可以重復定義變量 3. 變量提升(先使用變量,后定義) let 1. 能定義全局變量、局部變量、塊級變量(大括號之內的變量) 2. 不能重復定義一個變量 3. 不能變量提升(必須先定義,再使用) ~~~ var name = 'tom' var name = 'jack' // 可以 let age = 10 let age = 20 // 報錯!!重復定義了 // let 定義塊級作用域:只能在 for 循環中使用 for(let i=0; i<10; i++) { } console.log( i ) // 報錯!! // var 定義的是全局變量(函數外) for(var i=0; i<10; i++) { } console.log( i ) // 11 ~~~ # 題3、break 是干什么用的?continue 是干什么用的? 答:break:退出循環(出循環外) continue:結束本次循環,進入下一次循環(還在循環內) ~~~ // 代碼演示 break 和 continue 的區別 for(let i=0;i<3;i++) { if(i==1) break // 退出循環 console.log(i) } // 最終的輸出結果:0 for(let i=0;i<3;i++) { if(i==1) continue // 結束本次徨,進入下一次循環 console.log(i) } // 最終的輸出結果:02 ~~~ 退出多層循環:循環前加一個標記: ~~~js outer: for(let j\=0;j<10;j++) { for(let i\=0;i<10;i++) { if(i\==6) { break outer } console.log(i) } } console.log('xxyyzz') ~~~ # 題4、switch ... case 是干什么用的? 答:多條件分支,當分支多的時候性能比 if ... else if 更好,類似于 if .. else if.. else if.. else if.... ~~~ let day = 3 switch(day) { case 1: console.log('星期一') break case 2: console.log('星期二') break ..... case 7: console.log('星期日') break default: // 如果前面的條件都不滿足時執行 console.log('數字不是1~7') break } ~~~ 注意:每個條件中需要添加 break 退出 switch,如果不添加 break 會直接執行下面的 case 直到遇到 break: ~~~ let day = 1 switch(day) { case 1: // 匹配 console.log('星期一') // <-- 這里沒加 break 所以會向下執行下一個 case case 2: console.log('星期二') break ..... case 7: console.log('星期日') break default: // 如果前面的條件都不滿足時執行 console.log('數字不是1~7') break } 最終輸出結果是:星期一星期二 ~~~ # 題5、return 是干什么用的? 答:只能用在函數中。 用途是:1. 退出函數 2. 在退出的時還可以把函數中的數據返回到"調用它"的地方 ~~~ function abc() { let a = 10 let b = 20 return a+b // 退出函數并返回 a+ b 的值 } console.log( abc() ) // 30 如果函數中沒有 return 那么函數的返回值是 undefined: function abc() { let a = 10 let b = 20 a+b // 退出函數并返回 a+ b 的值 } console.log( abc() ) // undefined ~~~ # 題6、arguments 是干什么用的? 答:1.只能用在函數中。 2.它是一個對象,包含了所有調用函數時傳的參數 3.代表調用函數時傳的參數 ![](https://img.kancloud.cn/7d/1a/7d1a12d3833bcc280b3d146a16c88185_864x498.png) # 題7、在函數中,如何知道調用這個函數時一共傳了幾個參數? 答:在函數中使用 `arguments.length` 。 比如: ~~~ function abc() { console.log(arguments.length) } abc(1,2,3,4,6,7) // 6 abc('hello') // 1 ~~~ # 題8、JS 中如何獲取一個隨機數? 答:使用 `Math.random` 可以得到一個 [0~1) 之間的隨機數(包含0,不包含1) # 題9、如何獲取當前時間?當前時間戳?什么是時間戳? 答:當前時間:new Date()。 當前時間戳:Date.now(),得到的是毫秒為單位的秒數。 時間戳:從 1970年1月1日0時0分0秒 這個時間點到現在所經歷的秒數。 # 題10、如何把一個變量強制類型轉換成數字? 答:使用 Number 或者 +。 parseInt :轉整數 parseFloat:轉小數 比如: ~~~ let a = '013' let b = Number(a) // a 轉成數字 let c = +a ~~~ # 題11、NaN 是什么? 答:Not a Number(不是一個數字)。一些不合理的數學運算時會得到 NaN。 比如: ~~~ let a = 'abc' let b = Number(a) // NaN abc 轉完之后不是一個數字 console.log( 'abc' - 1234 ) // NaN ~~~ # 題12、如何獲取變量的類型? 答: 1. 使用 typeof 可以判斷基本數據類型,但對于對象時都返回 object ,無法區分具體的類型 2. 最準確的方法使用 `Object.prototype.toString.call(xx)` 來判斷 ![](https://img.kancloud.cn/a3/4c/a34c0f6c56091edb384ec04e74670553_790x284.png) # 題13、什么是隱式類型轉換? 答:不同的數據類型在進行運算時會先 `自動` 轉成相同的數據類型。 比如:'100' - 10 =90 # 題14、什么是強制類型轉換? 答:我們 `主動` 使用程序來轉換類型。 比如:parseInt('100') + 10 = 110 # 題15、0.1 + 0.2 等于幾? 答:在 JS 中處理小數時使用了 IEEE754 二進制浮點數算術標準,在小數運算時會出現不精確的情況。 解決辦法: 1. 運算時擴展 1000 倍轉成整數運算,然后再除以 1000. ~~~ let a = 0.1 let b = 0.2 let c = (a*1000+b*1000)/1000 ~~~ 2. 使用 `toFixed` 確定小數的位數。 ~~~ let a = 0.1 let b = 0.2 let c = (a+b).toFixed(2) // 保留兩個小數 ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看