国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

javascript變量作用域使用中常見錯誤總結(jié)_javascript技巧

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 21:08:01
文檔

javascript變量作用域使用中常見錯誤總結(jié)_javascript技巧

javascript變量作用域使用中常見錯誤總結(jié)_javascript技巧:今天在rainweb的博客上,看到了這篇非常好的文章,覺得非常有必要分享出來,相信大家認真讀完這篇文章,對js作用域的理解又會上升到一個新的臺階。 前言:javascript里變量作用域是個經(jīng)常讓人頭痛抓狂的問題,下面通過10++個題目,對經(jīng)常遇到又容易出錯的情況
推薦度:
導(dǎo)讀javascript變量作用域使用中常見錯誤總結(jié)_javascript技巧:今天在rainweb的博客上,看到了這篇非常好的文章,覺得非常有必要分享出來,相信大家認真讀完這篇文章,對js作用域的理解又會上升到一個新的臺階。 前言:javascript里變量作用域是個經(jīng)常讓人頭痛抓狂的問題,下面通過10++個題目,對經(jīng)常遇到又容易出錯的情況

今天在rainweb的博客上,看到了這篇非常好的文章,覺得非常有必要分享出來,相信大家認真讀完這篇文章,對js作用域的理解又會上升到一個新的臺階。

前言:javascript里變量作用域是個經(jīng)常讓人頭痛抓狂的問題,下面通過10++個題目,對經(jīng)常遇到又容易出錯的情況進行了簡單總結(jié),代碼樣例很短很簡單

題目一
代碼如下:
var name = 'casper'; alert(name); //毫無疑問地輸出:casper

題目二
代碼如下:
alert(name); //報錯:對象未定義,即使用一個壓根就不存在的變量,所以出錯
age = 24; //這里木有錯,但age不是為定義嗎?翻下犀牛書,明白了 //給一個未定義的變量賦值,會創(chuàng)建一個全局變量,相當(dāng)于:var age = 24

題目三
代碼如下:
alert(name); //name下面才定義,這里肯定報錯了吧?錯!這里彈出:undefined
var name = 'casper';

解釋:javascript代碼在解析的時候,都會搜索下var聲明的變量,并將其聲明提前,實際的過程如下:
代碼如下:
var name; //光聲明name變量,但未賦值,所以為此時為:undefined
alert(name); name = 'casper';

題目四
代碼如下:
var name = 'casper';
function show(){
alert(name);
name = 'hello'; //全局變量name的值改為'hello'
}
show(); //輸出:casper

題目五
代碼如下:
var name = 'casper';
function show(){ alert(name); //輸出:undefined,是不是有想死的心
var name = 'hello'; //注意:與題目四相比,此處name前多了個var,
} show();

解釋:在函數(shù)show中,name是個局部變量,題目三的原理同樣適用于此,即函數(shù)show內(nèi)部實際為
(小知識點補充:當(dāng)函數(shù)內(nèi)部存在與外部全局變量同名的局部變量,優(yōu)先使用局部變量,此處為name)
function show(){ var name; alert(name); name = 'hello'; }
題目六
代碼如下:
var list = [1,2,3];
function show(){ if(typeof list === 'undefined')
{ list = []; }
alert(list.length);
};
show(); //結(jié)果:3,是不是一目了然= =,稍等,請接著看第七題

題目七
代碼如下:
var list = [1,2,3];
function show(){
if(typeof list === 'undefined')
{ var list = []; //請注意,與題目六相比,這里多了個var
} alert(list.length); };
show(); //結(jié)果:0,是不是突然有了想死的沖動

解釋:javascript沒有塊級作用域(即由{}限定的作用域),函數(shù)中聲明的所有變量,無論在哪里聲明,在整個函數(shù)中都是有定義的,這點跟C++等灰常不同,趕緊扭轉(zhuǎn)思想與時俱進
于是,再來看下show方法實際的內(nèi)部解析邏輯
代碼如下:
function show(){ var list; //list為局部變量,且此處尚未賦值
if(typeof list === 'undefined'){
list = []; }
alert(list.length); };

題目八
代碼如下:
alert(typeof show); //結(jié)果:function,請相信你的眼睛,你沒有看錯
function show(){}

解釋:javascript代碼解析的過程,類似 function show() 這種形式聲明的函數(shù),跟var聲明的變量一樣,都會被提到最前面,不同的是,函數(shù)聲明跟定義同時完成,但var聲明的變量的賦值在后面才會完成
題目九
代碼如下:
alert(typeof show); //結(jié)果:undefined,請再次擦亮你的眼睛,你的確沒有看錯
var show = function(){};

解釋:采用函數(shù)定義式以及函數(shù)表達式定義函數(shù),兩者過程之間存在一些區(qū)別
函數(shù)定義式:function show(){}
函數(shù)表達式:var show = function(){}
采用函數(shù)定義式聲明的方法,函數(shù)的定義會提前;而采用函數(shù)表達式聲明的方法,函數(shù)的定義,跟采用var聲明的局部變量一樣,函數(shù)聲明會提前,但函數(shù)定義位置不變,過程如下:
代碼如下:
var show; alert(typeof show);
show = function(){};

題目十
代碼如下:
var data = {name:'casper'};
function data(){ alert('casper'); }
data(); //TypeError: object is not a function

是不是有砸顯示器的沖動。。data此時其實為{name:'casper'},把一個object當(dāng)函數(shù)調(diào)用,于是報錯了
前面說過,函數(shù)聲明(通過函數(shù)定義式)、var聲明的變量會被提前,但是會有先后順序之分,如下:
代碼如下:
function data(){ alert('casper');
} var data; data = {name:'casper'};
data();

略微修改下,結(jié)果就不同鳥:
代碼如下:
var data = {name:'casper'};
var data = function (){ //通過函數(shù)表達式聲明函數(shù)
alert('casper'); }
data(); //結(jié)果:casper

結(jié)合上文不難猜想過程如下:
代碼如下:
var data; data = {name:'casper'};
data = function (){ alert('casper'); }
data(); //結(jié)果:casper

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

javascript變量作用域使用中常見錯誤總結(jié)_javascript技巧

javascript變量作用域使用中常見錯誤總結(jié)_javascript技巧:今天在rainweb的博客上,看到了這篇非常好的文章,覺得非常有必要分享出來,相信大家認真讀完這篇文章,對js作用域的理解又會上升到一個新的臺階。 前言:javascript里變量作用域是個經(jīng)常讓人頭痛抓狂的問題,下面通過10++個題目,對經(jīng)常遇到又容易出錯的情況
推薦度:
標(biāo)簽: 作用 js 問題
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 亚洲黄色网站视频 | 欧美一区二区三区视频在线观看 | 在线中文字幕第一页 | 国产精品视频不卡 | 国产中文久久精品 | 久久国产免费一区 | 亚洲欧美天堂网 | 久久精品国产免费一区 | 亚洲国产欧美视频 | 国产青草视频在线观看 | 精品国产一区二区三区19 | 二区久久国产乱子伦免费精品 | 亚洲一区二区三区91 | 欧美网站在线观看 | 日韩大片免费观看视频播放 | 国产免费黄色 | 久久精品国产免费一区 | 日韩在线无 | 亚洲视频免费在线观看 | 免费看日产一区二区三区 | 全免费a级毛片免费毛视频 热re91久久精品国产91热 | 日韩精品成人 | 亚洲欧美日韩中文无线码 | 日韩欧美综合视频 | 国产精品系列在线观看 | 国产在线精品一区二区夜色 | 一区二区视频在线 | 劲爆欧美色欧美 | 国产日韩欧美在线 | 成人爽a毛片在线视频 | 日韩不卡一区二区三区 | 国产成人综合久久精品亚洲 | 国产成人精品综合久久久 | 一区二区三区观看 | 国产精品毛片久久久久久久 | 最刺激黄a大片免费观看 | 精品在线观看免费 | 国产精品区一区二区三 | 国内一级野外a一级毛片 | 国产欧美综合在线观看第七页 | 亚洲欧美日韩综合精品网 |