容易犯的錯誤原因
認(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ù)字后講加