20190625爽柒,下列代碼輸出內(nèi)容是?
for (var i = 0; i < 3; i++) {
setTimeout(()=>console.log(i),1);
}
for (let i = 0; i < 3; i++) {
setTimeout(()=>console.log(i),1);
}
3者填,3浩村,3
0,1占哟,2
解析:由于JavaScript中的事件執(zhí)行機(jī)制心墅,setTimeout函數(shù)真正被執(zhí)行時(shí),循環(huán)已經(jīng)走完榨乎。由于第一個(gè)循環(huán)中的變量i是使用var關(guān)鍵字聲明的怎燥,因此該值是全局的。在循環(huán)期間蜜暑,我們每次使用一元運(yùn)算符++都會(huì)將i的值增加1铐姚。因此在第一個(gè)例子中,當(dāng)調(diào)用setTimeout函數(shù)時(shí)肛捍,i已經(jīng)被賦值為3隐绵。在第二個(gè)循環(huán)中,使用let關(guān)鍵字聲明變量i拙毫,使用let和const關(guān)鍵字聲明的變量是具有塊作用域的(塊是{}之間的任何東西)依许。在每次迭代期間,i將被創(chuàng)建為一個(gè)新值缀蹄,并且每個(gè)值都會(huì)存在于循環(huán)內(nèi)的塊級(jí)作用域峭跳。
20190626膘婶,下列代碼的結(jié)果是?
const shape = {
radius:10,
diameter(){
return this.radius * 2;
},
perimeter:()=> 2*Math.PI * this.radius
}
console.log(shape.diameter());
console.log(shape.perimeter());
20 NaN
解析:diameter是普通函數(shù)蛀醉,perimeter是箭頭函數(shù)悬襟。對(duì)于箭頭函數(shù),this關(guān)鍵字指向是它所在上下文(定義時(shí)的位置)的環(huán)境拯刁,與普通函數(shù)不同古胆!這意味著當(dāng)我們調(diào)用perimeter時(shí),它不是指向shape對(duì)象筛璧,而是指其定義時(shí)的環(huán)境(window)。沒(méi)有值radius屬性惹恃,返回undefined
20190627夭谤,下列代碼的結(jié)果是?
function Person(firstName,lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
const lydia = new Person('Lydia','Hallie');
const sarah = Person('Sarah','Smith');
console.log(lydia);
console.log(sarah);
console.log(this.firstName);
console.log(this.lastName);
Person {firstName: "Lydia", lastName: "Hallie"}
undefined
Sarah
Smith
解析:對(duì)于sarah巫糙,我們沒(méi)有使用new關(guān)鍵字朗儒。使用new時(shí),它指的是我們創(chuàng)建的新空對(duì)象参淹。但是醉锄,如果不添加new它指的是全局對(duì)象!我們指定了this.firstName等于'Sarah和this.lastName等于Smith浙值。我們實(shí)際做的是定義global.firstName ='Sarah'和global.lastName ='Smith恳不。sarah本身的返回值是undefined因此this.firstName和this.lastName分別是Sarah和Smith了
20190628,下列代碼的結(jié)果是开呐?
const obj = {1:"a",2:"b",3:"c"};
const set = new Set([1,2,3,4,5]);
console.log(obj.hasOwnProperty("1"));
console.log(obj.hasOwnProperty(1));
console.log(set.has("1"));
console.log(set.has(1));
true true false true
解析:所有對(duì)象鍵(不包括Symbols)都會(huì)被存儲(chǔ)為字符串烟勋,即使你沒(méi)有給定字符串類型的鍵。 這就是為什么obj.hasOwnProperty('1')也返回true筐付。上面的說(shuō)法不適用于Set卵惦。在Set中沒(méi)有"1",set.has('1')返回false。它有數(shù)字類型1瓦戚,set.has(1)返回true沮尿。