js錯誤總結(jié)

容易犯的錯誤原因

認(rèn)為是split()使用排除法:split分割字符串端逼;reverse反轉(zhuǎn)數(shù)組;join將數(shù)組轉(zhuǎn)成字符串

trim()?? 去除字符串兩端空格

return 只能在函數(shù)內(nèi)部使用在循環(huán)中也是使用恩商,setInterval(fn1,1000) 只會調(diào)用一次 fn1

var str = "hello world";console.log( str. substring(2,7) )輸出llo w

if(!this._num&&this._num!==0)return this._num=1

;//如果這里的條件是!this._num

在這里因?yàn)楫?dāng)this._num為0的時(shí)候他就會返回一個(gè)1,

??????? //而下面我們設(shè)置了this.num--;在這里減1之后this.num就變成了0他就會回到set方法中的value把值賦值給input的值

??????? //接著下面get中的this._num的值也就變成了0,然后this._num的值又變成了1在執(zhí)行上面說的,這樣就造成了死循環(huán)浸遗,

undefined 和 null 的區(qū)別與聯(lián)系null和其它語言的用法類似,表示沒有對象箱亿,算數(shù)運(yùn)算時(shí)會被轉(zhuǎn)換為0,容易混淆弃秆,不確定是變量未定義届惋、被賦值為null、還是本身值就是0菠赚。所以增加了undefined類型脑豹,表示缺少值,算數(shù)運(yùn)算不會被轉(zhuǎn)換為0衡查,而是NaN瘩欺。

NaN是number類型的全局屬性,和Number.NaN等效拌牲,表示非數(shù)字不能用NaN來判斷非數(shù)字俱饿,因?yàn)镹aN和NaN也是不相等的

document.write要在文檔加載完畢后使用,否則會覆蓋整個(gè)文檔塌忽,這時(shí)會發(fā)現(xiàn)頁面被清空了拍埠,只輸出了document.write輸出的內(nèi)容

"8" + 8; // 88 ;8 + "8"; // 88 土居;parseInt("8") + 8; // 16數(shù)字和字符串相加枣购,無論順序如何嬉探,數(shù)字都會被轉(zhuǎn)換為字符串:

函數(shù)內(nèi)部的變量,如果沒有使用var聲明仍然是全局變量棉圈,生命周期直到頁面關(guān)閉

在面向?qū)ο笾杏?jì)時(shí)器的this計(jì)時(shí)器中的this永遠(yuǎn)都是window

var str = "hello world";?? console.log( str. substring(2,7) )輸出什么

輸出llo w

能夠正確隨機(jī)獲取數(shù)組中元素的是 var arr = [“

張三”,“李四”,“王二”,“二哈”]

要隨機(jī)獲取數(shù)組的內(nèi)容涩堤,只要能生成隨機(jī)下標(biāo)即可,arr的下標(biāo)是0到arr.length-1之間分瘾,所以只要能生成0到3的隨機(jī)正數(shù)即可胎围;

A選項(xiàng):Math.random() * (arr.length-1) 得到 0.0001-2.9999的隨機(jī)數(shù),Math.round()方法作用是四舍五入芹敌,經(jīng)過該方法:得到0-3之間的隨機(jī)數(shù)痊远,正確;

B選項(xiàng):Math.random() * arr.length得到0.0001-3.9999的隨機(jī)數(shù)氏捞,parseInt( )方法能取整數(shù)部分碧聪,經(jīng)過該方法:得到0-3之間的隨機(jī)數(shù),正確液茎;

C選項(xiàng):Math.random() * (arr.length) 得到0.0001-3.9999的隨機(jī)數(shù)逞姿,四舍五入后:得到0-4之間的隨機(jī)數(shù),錯誤

D選項(xiàng):Math.random() * (arr.length-1)得到 0.0001-2.9999的隨機(jī)數(shù)捆等,parseInt( )方法取整后:得到0-2之間的隨機(jī)數(shù)滞造,錯誤

以下關(guān)于div~p選擇符說法正確是通用兄弟選擇器(E ? F)

通用兄弟元素選擇器是CSS3新增加一種選擇器,這種選擇器將選擇某元素后面的所有兄弟元素栋烤,他們也和相鄰兄弟元素類似谒养,需要在同一個(gè)父元素之中.

以下哪個(gè)屬性不能隱藏元素隱藏一個(gè)元素有3種方式,display:none;visibility:hidden;opacity:0明郭;所以除了這3個(gè)之外

的overflow:hidden买窟,表示的是溢出隱藏,所以選擇A薯定。

設(shè)置彈性子元素各行之間對齊的屬性是始绍?flex-wrap屬性用于指定彈性盒子的子元素?fù)Q行方式,space-between是彈性子元素在主軸對其方

式的屬性值话侄,align-content子元素各行直接的對齊屬性亏推,align-items子元素的側(cè)軸對齊方式屬性

flex-direction設(shè)置子元素縱向反轉(zhuǎn)排列的屬性是row橫向排列,column縱向排列年堆,row-reverse橫向翻轉(zhuǎn)吞杭,column-reverse縱向翻轉(zhuǎn)

以下哪些是H5能支持的視頻文件格式格式??? IE???? Firefox? Opera??? Chrome?? Safari?? No?? 5.0+? 3.0+

Ogg? No?? 3.5+?? 10.5+? 5.0+?? No MPEG4? 9.0+?? No? WebM? No? 4.0+

10.6+?? 6.0+?? No

觸發(fā)BFC的條件有1.float的值不為none2.overflow的值不為visible

3.display的值為table-cell、tabble-caption和inline-block之一

4.position的值不為static或則releative中的任何一個(gè)

需要給img添加什么聲明嘀韧,可以解決圖片下方間隙的問題float:left;vertical-align:top;display:block圖片間隙由文字默認(rèn)對齊導(dǎo)致 只要讓文字不

在左下方或右下方顯示就沒問題

Javascript中,假設(shè) foo 對象有 att 屬性篇亭,那么以下獲取att屬性值的

表達(dá)式哪個(gè)是錯誤的

訪問一個(gè)對象的屬性有兩種方式:

1. foo.att2. foo["att"]

for..of與for..in的區(qū)別,以下說法正確的是for in可以遍歷對象锄贷,for of不能遍歷對象

事件中會產(chǎn)生哪些兼容問題事件對象的創(chuàng)建译蒂,事件冒泡曼月,瀏覽器的默認(rèn)行為,事件委托中事件源的獲取

字符串的操作方法有indexOf 柔昼;lastIndexOf哑芹; charAt;charCodeAt

解構(gòu)賦值可以做到以下哪些事一次性可以定義多個(gè)變量捕透;可以作用在函數(shù)的傳參上聪姿,以對象的方式傳遞,參數(shù)順序也無須保持一致

?可以輕松實(shí)現(xiàn)兩個(gè)數(shù)的交換乙嘀; 可以實(shí)現(xiàn)一個(gè)函數(shù)返回多個(gè)結(jié)果

var p = {username:"leson"}獲取p對象里面leson正確的做法為對象屬性訪問方式:obj.name或obj["name"]

php中對數(shù)組下標(biāo)說法正確的是數(shù)組的下標(biāo)可以是字符串末购,是數(shù)字,null,true,false等

下面有關(guān)javascript系統(tǒng)方法的描述虎谢,正確的是parseFloat方法:該方法可以將一個(gè)字符串轉(zhuǎn)換成對應(yīng)的小數(shù)

parseInt方法:該方法可以將一個(gè)字符串轉(zhuǎn)換成對應(yīng)的整數(shù)

Number方法 : 該方法可以將某個(gè)數(shù)據(jù)類型轉(zhuǎn)成數(shù)值類型

Boolean方法 : 該方法可以將某個(gè)數(shù)據(jù)類型轉(zhuǎn)成布爾類型

選出有兼容性的方法或者屬性?? event.returnValue = false;}else { e.preventDefault();};

srcElement盟榴; addEventListener;stopPropagation婴噩;preventDefault

HTML表單的首要標(biāo)記是,標(biāo)記的參數(shù)method表示表單發(fā)送的

方法擎场,可能為get或post,下列關(guān)于get和post的描述不正確的是

關(guān)于get和post請求的特點(diǎn)

答案A:post方法傳遞的數(shù)據(jù)對客戶端是不可見的

答案B:get請求攜帶數(shù)據(jù)大小與瀏覽器和服務(wù)器對url長度限制有關(guān)几莽,為保證兼容性迅办,最好不要超過2kb

答案C:post請求攜帶的數(shù)據(jù)大小理論上是沒有限制的,HTTP協(xié)議規(guī)范也沒有進(jìn)行大小限制章蚣,具體大小由瀏覽器和服務(wù)器對數(shù)據(jù)的處理能力決定站欺。

答案D:get方法把數(shù)據(jù)暴露在url中以查詢串的方式傳遞,因此是對客戶端來說是可見的纤垂。

因此 BCD都不正確

function func(){return 1;}alert(func);alert(func());函數(shù)加()和不加() 的區(qū)別镊绪,加()是直接調(diào)用這個(gè)函數(shù),不加是函數(shù)本身

返回值定義:一個(gè)函數(shù)實(shí)際上就是一個(gè)計(jì)算過程洒忧,計(jì)算完成之后的結(jié)果就是返回值。arguments是存儲了函數(shù)傳送過過來實(shí)參够颠,arguments對象的長度是由實(shí)參個(gè)數(shù)而不是形參個(gè)數(shù)決定的

var o={ fn:function (){console.log(fn);}};o.fn();//ERROR報(bào)錯在函數(shù)表達(dá)式內(nèi)部能不能訪問存放當(dāng)前函數(shù)的變量

function fn(a) { console.log(a);// function a() {alert(1)}

var a = 2; function a() {alert(1)} console.log(a);//2? }fn(1);

預(yù)解析時(shí)找到了變量a熙侍,并且賦值為undefined,找到了聲明function a(){alert(1)}履磨,為

整個(gè)函數(shù)體蛉抓;兩者同名,所以聲明覆蓋了變量a的值剃诅,a不再是undefined的巷送,而是函數(shù)體。

if('a' in window) {??

??? var a = 10;

}?

console.log(a);  // 10

變量提升矛辕、window的變量

var a;

if ('a' in window) { a = 10;}

if(){}的花括號并不像function(){}的花括號一樣笑跛,具有自己的塊級作用域付魔,if的花括號還是全

局的環(huán)境。根據(jù)JavaScript的變量提升機(jī)制飞蹂,var a會被js引擎解釋到第一行几苍,

let username='守候'

function fn(){alert(this.username);//undefined}fn();

可能大家會困惑,為什么不是輸出守候陈哑,但是在細(xì)看一看妻坝,我聲明的方式是let,不會是window對象var username='守候' function fn(){ alert(this.username);//守候 } fn(); //--------------- window.username='守候' function fn(){ alert(this.username);//守候 } fn();

這個(gè)相信不難理解惊窖,就是那個(gè)函數(shù)調(diào)用刽宪,this指向哪里

window.b=2222 let obj={ a:111, fn:function(){ alert(this.a);//111 alert(this.b);//undefined } } obj.fn();

很明顯,第一次就是輸出obj.a界酒,就是111圣拄。而第二次,obj沒有b這個(gè)屬性盾计,所以輸出undefined售担,

因?yàn)閠his指向obj。

let obj1={ a:222 }; let obj2={ a:111, fn:function()

{ alert(this.a); } } obj1.fn=obj2.fn; obj1.fn();//222

這個(gè)相信也不難理解署辉,雖然obj1.fn是從obj2.fn賦值而來族铆,但是調(diào)用函數(shù)的是obj1,

所以this指向obj1哭尝。

let TestClass=function(){ this.name='111'; }

?let subClass=new TestClass(); subClass.name='守候';

console.log(subClass.name);//守候 let subClass1=new TestClass();

?console.log(subClass1.name)//111

但是有一個(gè)坑哥攘,雖然一般不會出現(xiàn),但是有必要提一下材鹦。

在構(gòu)造函數(shù)里面返回一個(gè)對象逝淹,會直接返回這個(gè)對象,而不是執(zhí)行構(gòu)造函數(shù)后創(chuàng)建的對象

let obj1={ a:222 }; let obj2={ a:111,

fn:function(){ alert(this.a); } } obj2.fn.call(obj1);

此時(shí)雖然是 obj2 調(diào)用方法桶唐,但是使用 了call栅葡,動態(tài)的把 this 指向到 obj1。相當(dāng)于這個(gè)

obj2.fn 這個(gè)執(zhí)行環(huán)境是 obj1 尤泽。apply 和 call 詳細(xì)內(nèi)容在下面提及欣簇。

let obj={ a:222, fn:function(){ setTimeout(function()

{console.log(this.a)}) } }; obj.fn();//undefined

不難發(fā)現(xiàn),雖然 fn() 里面的 this 是指向 obj 坯约,但是熊咽,傳給 setTimeout 的是普通函數(shù)

this 指向是 window , window下面沒有 a 闹丐,所以這里輸出 undefined 横殴。

let obj={ a:222, fn:function(){ setTimeout(()=>

{console.log(this.a)}); } }; obj.fn();//222

這次輸出 222 是因?yàn)椋瑐鹘o setTimeout 的是箭頭函數(shù)卿拴,然后箭頭函數(shù)里面沒有 this衫仑,

所以要向上層作用域查找梨与,在這個(gè)例子上, setTimeout 的上層作用域是 fn惑畴。而 fn 里面的

this 指向 obj 蛋欣,所以 setTimeout 里面的箭頭函數(shù)的 this ,指向 obj 如贷。所以輸出 222 陷虎。

let add=(function(){ let now=0; return

{ doAdd:function(){ now++; console.log(now); } } })()

now 這個(gè)變量,并沒有隨著函數(shù)的執(zhí)行完畢而被回收杠袱,而是繼續(xù)保存在內(nèi)存里面

然后把這個(gè)對象賦值給 add 尚猿。由于 add 里面有函數(shù)是依賴于 now 這個(gè)變量

。所以 now 不會被銷毀楣富,回收凿掂。這就是閉包的用途之一(延續(xù)變量周期)。

由于 now 在外面訪問不到纹蝴,這就是閉包的另一個(gè)用途(創(chuàng)建局部變量庄萎,保護(hù)局部變量不會被訪問

和修改)。

[]==[][] == [] 這個(gè)好理解. 當(dāng)兩個(gè)值都是對象 (引用值) 時(shí), 比較的是兩個(gè)引用值在內(nèi)存中是否是

同一個(gè)對象. 因?yàn)榇?[] 非彼 [], 雖然同為空數(shù)組, 確是兩個(gè)互不相關(guān)的空數(shù)組, 自然 == 為 false.

計(jì)時(shí)器計(jì)時(shí)器里里面的對象都是window

函數(shù)嵌套函數(shù)外層函數(shù)執(zhí)行返回里層函數(shù)(不是返回里層函數(shù)的執(zhí)行結(jié)果)

在面向?qū)ο笾械膖his再添加事件函數(shù)的時(shí)候前面要加this并且考慮是否要bind this

"1"+undefined//=>"1undefined"塘安;1+null//數(shù)值轉(zhuǎn)換null=>0,結(jié)果1相當(dāng)于執(zhí)行字符串拼接

true+true//2糠涛;1+undefined//數(shù)值轉(zhuǎn)換undefined=>NaN,結(jié)果NaN布爾值轉(zhuǎn)換為數(shù)字后講加

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市兼犯,隨后出現(xiàn)的幾起案子忍捡,更是在濱河造成了極大的恐慌,老刑警劉巖切黔,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件砸脊,死亡現(xiàn)場離奇詭異,居然都是意外死亡纬霞,警方通過查閱死者的電腦和手機(jī)凌埂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诗芜,“玉大人侨舆,你說我怎么就攤上這事【钅埃” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵熔恢,是天一觀的道長脐湾。 經(jīng)常有香客問我,道長叙淌,這世上最難降的妖魔是什么秤掌? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任愁铺,我火速辦了婚禮,結(jié)果婚禮上闻鉴,老公的妹妹穿的比我還像新娘茵乱。我一直安慰自己,他們只是感情好孟岛,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布瓶竭。 她就那樣靜靜地躺著,像睡著了一般渠羞。 火紅的嫁衣襯著肌膚如雪斤贰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天次询,我揣著相機(jī)與錄音荧恍,去河邊找鬼。 笑死屯吊,一個(gè)胖子當(dāng)著我的面吹牛送巡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盒卸,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼骗爆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了世落?” 一聲冷哼從身側(cè)響起淮腾,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎屉佳,沒想到半個(gè)月后谷朝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡武花,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年圆凰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片体箕。...
    茶點(diǎn)故事閱讀 40,498評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡专钉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出累铅,到底是詐尸還是另有隱情跃须,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布娃兽,位于F島的核電站菇民,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜第练,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一阔馋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧娇掏,春花似錦呕寝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至志秃,卻和暖如春怔球,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浮还。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工竟坛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人钧舌。 一個(gè)月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓担汤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親洼冻。 傳聞我的和親對象是個(gè)殘疾皇子崭歧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容