Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 www一区二区三区www一区二区,91免费视频网,久久一区二区三区免费播放

          整合營銷服務商

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

          免費咨詢熱線:

          JavaScript數據類型之Undefined類型

          JavaScript數據類型之Undefined類型詳解

          、Undefined類型

          Undefined類型只有一個值,即特殊的undefined值。在使用var聲明變量但未對其加以初始化時,這個變量的值就是undefined,例如:

          var message;
          alert(message==undefined); //true
          

          這個例子只生命了變量message,但未對其進行初始化。比較這個變量與undefined字面量,結果表明它們是相等的。這個例子與下面的例子是等價的:

          var message=undefined;
          alert(message==undefined); //true
          

          這個例子使用undefined值顯式初始化了變量message。但我們沒有必要這么做,因為未經初始化的值默認就會取得undefined值。

          一般而言,不存在需要顯式地把一個變量設置為undefined值的情況。字面值undefined的主要目的是用于比較,而ECMA-262第3版之前的版本中并沒有規定這個值。第3版引入這個值是為了正式區分空對象指針與未經初始化的變量。

          二、未初始化的變量與尚未定義的變量

          不過,未初始化的變量與尚未定義的變量是不一樣的,看看下面這個例子:

          var message;
          //var age;
          alert(message); //"undefined"
          alert(age); //產生錯誤
          

          運行以上代碼,第一個警告框會顯示變量message的值,即“undefined”。而第二個警告框,由于傳遞給alert()函數的是尚未聲明的變量age,則會導致拋出一個錯誤。對于尚未聲明過的變量,只能執行一項操作,即使用typeof操作符檢測其數據類型(對未經聲明的變量調用delete不會導致錯誤,但這樣做沒什么實際意義,而且在嚴格模式下確實會導致錯誤)。

          然而,令人困惑的是:對未經初始化的變量執行typeof操作符會返回undefined值,而對未聲明的變量執行typeof操作符同樣也會返回undefined值。來看下面的例子:

          var message;
          //var age
          alert(typeof message); //"undefined"
          alert(typeof age); //"undefined"
          

          結果表明,對未經初始化和未聲明的變量執行typeof操作符都返回了undefined值,這個結果有其邏輯上的合理性。因為雖然這兩種變量從技術角度看有本質區別,但實際上無論對哪種變量也不可能執行真正的操作。

          即便未初始化的變量會自動被賦予undefined值,但顯示地初始化變量依然是明智的選擇。如果能夠做到這一點,那么當typeof操作符返回“undefined”值時,我們就知道被檢測的變量還沒有被聲明,而不是尚未初始化。

          篇文章給童靴們講解了typeof操作符的用法,從這篇開始我們分六篇詳細講解js數據類型 。

          Undefined 類型

          Undefined只有一個特殊的值,就是undefined。在使用var變量聲明變量但是并沒有給其初始化時,它的值就是undefined。

          var message;

          console.log(message==undefined); //true

          上面的栗子只聲明了一個變量message,沒有給它初始化。我們在控制臺輸出變量message與字面量undefined比較后的結果是相等的。這個栗子與下面的栗子等價的:

          var message=undefined;

          console.log(message==undefined); //true

          上面的栗子給message初始化一個值undefined,結果也是一樣的。不過我們不需要如此麻煩,一個沒有初始化的值默認會取undefined值。

          童靴們還要注意的是,沒有初始化的變量和尚未定義的變量還是不一樣的。我們舉個栗子區分一下:

          //var age;

          console.log(age) //產生錯誤

          var name;

          console.log(name); //undefined

          上面栗子中第一段代碼,因為age是注釋的,并沒有聲明變量age,所以在控制臺中輸出會導致一個錯誤:

          控制臺報錯

          第二段代碼聲明了一個變量name,所以在控制臺中會顯示name的值undefined:

          對尚未聲明的變量,我們只能執行一項操作就是typeof操作符檢測其類型。另大家都疑惑的是,未初始化的變量執行typeof操作符返回的值是undefined,而沒有聲明的變量執行typeof操作符也會返回undefined。

          var name;

          //var age

          console.log(typeof name) //undefined

          console.log(typeof age) //undefined

          這種結果可能童靴們會疑惑,其實還是有一定邏輯上的合理性的。雖然它們在技術角度看有本質的區別,但是這兩種變量都是不可能執行真正的操作。

          愛學習的孩子運氣不會差哦~

          關注小白前端,持續收到文章推送!

          vue與axios直接在html文件中使用的時候,位于axios的請求中的this指向并不是指向vue,而是指向window,如果在請求中直接用this獲取data中的數據會出現undefined的問題,解決思路是將ES5的函數語法更換為箭頭函數即可解決此問題,深層的原因就得深入去了解箭頭函數和普通函數之間的區別了!

          案例:

          new Vue({
          	el: '#app',
          	data:{
          		carousels: [], 
              },
              created() {
                axios.get('/api/banners/').then(function (response) {
                	   // 這里的this.carousels是undefined,因此上下邊的賦值是不起作用的
                     this.carousels=res.data
                 }).catch(function (error) {
                     console.log(err)
                 });
               },
           })

          以上案例可以發現在axios中使用this獲取data中的值是獲取不到的,這就是this的指向問題造成的,他不是指向vue,只需要修改如下,將function函數改為箭頭函數即可解決!

          修改代碼如下:

          new Vue({
          	el: '#app',
          	data:{
          		carousels: [], 
              },
              created() {
                axios.get('/api/banners/').then(res=> {
                     this.carousels=res.data
                 }).catch(err=> {
                     console.log(err)
                 });
               },
           })

          到此問題就解決了!


          主站蜘蛛池模板: 久久99精品国产一区二区三区| 一区二区三区午夜视频| 亚洲日韩国产一区二区三区| 精品女同一区二区三区在线 | 韩国精品一区二区三区无码视频| 日韩一区二区三区射精| 精品女同一区二区| 亚洲线精品一区二区三区| 韩国一区二区视频| 亚洲AV永久无码精品一区二区国产| 精品视频一区二区三三区四区| 国产成人精品视频一区二区不卡| 中文字幕一区二区三区在线观看 | 一区二区三区视频免费观看| 天堂Aⅴ无码一区二区三区| 亚洲视频一区在线| 国产伦精品一区二区三区四区| 亚洲色无码一区二区三区| 亚洲一区免费视频| 亚洲人成网站18禁止一区| 2020天堂中文字幕一区在线观| 国产福利一区二区| 久久综合九九亚洲一区| 国产精品美女一区二区| 日本一区精品久久久久影院| 夜夜高潮夜夜爽夜夜爱爱一区| 亚洲永久无码3D动漫一区| 国产精品美女一区二区| 国产成人精品日本亚洲专一区| 国产精品一区在线观看你懂的| 国产日本亚洲一区二区三区| 一区视频在线播放| 色婷婷香蕉在线一区二区| 日韩视频一区二区三区| 精品一区二区三区影院在线午夜 | 国产一区二区三区美女| 久久久无码一区二区三区| 亚洲国产一区二区三区| 成人在线观看一区| 亚洲Av高清一区二区三区| 中文字幕在线观看一区|