这是我参与8月更文挑战的第16天,活动详情查看:8月更文挑战
continue问题
for (let i = 1; i < 5; i++) {
if (i === 3) continue;
console.log(i);
}
- A:
12 - B:
123 - C:
124 - D:
134
答案: C
这里for循环中,当i等于3的时候,continue就跳过迭代。
构造函数问题
String.prototype.giveMyFood = () => {
return "Please give weirui food!";
};
const name = "weirui";
name.giveMyFood();
- A:
"Please give weirui food!" - B:
TypeError: not a function - C:
SyntaxError - D:
undefined
答案: A
String是一个内置的构造函数,我们可以为它添加一些属性。 在这里给它的原型添加了一个方法。 原始类型的字符串自动转换为字符串对象,由字符串原型函数生成。 因此,所有字符串(字符串对象)都可以访问该方法!
当使用基本类型的字符串调用giveMyFood时,实际上发生了下面的过程:
- 创建一个
String的包装类型实例 - 在实例上调用
substring方法 - 销毁实例
类型转换
const a = {};
const b = { key: "b" };
const c = { key: "c" };
a[b] = 123;
a[c] = 456;
console.log(a[b]);
- A:
123 - B:
456 - C:
undefined - D:
ReferenceError
答案: B
对象键自动转换成了字符串,开始将一个对象设置为对象a的键,值为123,当对象自动转换为字符串时候,就变成了[Object object],所以说是a["Object object"] = 123。c对象同样也发生了隐式类型转换。那么,a["Object object"] = 456。这时候我们打印a[b],它实际上是a["Object object"],因此返回456。
call bind问题
const person = { name: "weirui" };
function sayHi(age) {
console.log(`${this.name} is ${age}`);
}
sayHi.call(person, 24);
sayHi.bind(person, 24);
- A:
undefined is 21Lydia is 21 - B:
functionfunction - C:
Lydia is 21Lydia is 21 - D:
Lydia is 21function
答案: D
我们传递this关键字引用的对象, 但是,.call方法会立即执行,
.bind方法会返回函数的拷贝值,但带有绑定的上下文,不会立即执行。
类型判断
function sayHi() {
return (() => 0)();
}
typeof sayHi();
- A:
"object" - B:
"number" - C:
"function" - D:
"undefined"
答案: B
sayHi函数返回立即调用的函数的返回值。 该函数返回0,类型为number。
再来看一个类型判断的问题:
哪些值是假值?
0;
new Number(0);
("");
(" ");
new Boolean(false);
undefined;
- A:
0,'',undefined - B:
0,new Number(0),'',new Boolean(false),undefined - C:
0,'',new Boolean(false),undefined - D: 所有都是假值
答案: A
JavaScript中只有6个假值:
undefinednullNaN0''(empty string)false
函数构造函数,如new Number和new Boolean都是真值。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!