155个JavaScript基础问题(46-55)

简介: 155个JavaScript基础问题(46-55)

这是我参与更文挑战的第3天,活动详情查看:更文挑战

46. 输出是什么?

let person = { name: "Lydia" };
const members = [person];
person = null;
console.log(members);

image.png

答:D,很多朋友认为person改为了null,members中的person也应该变为null,其实person中存放的是对象的地址,members[0]中存放的也是这个对象的地址,person只是将地址置为了null,并不影响members[0]中存放的地址,所以本题选D。

47. 输出是什么?

const person = {
  name: "Lydia",
  age: 21
};
for (const item in person) {
  console.log(item);
}


image.png

答:B,本题考查的是for in循环,该循环遍历的是对象的键,而对象的键在底层存放的都是字符串。

48. 输出是什么?

console.log(3 + 4 + "5");

image.png

答:B,此题考查的是运算符

49. num的值是什么?

const num = parseInt("7*6", 10);

image.png

答:C,本题想考查的是parseInt在进制转换的用法,本意是想将第一个参数转为十进制数字,但是解析到*便暂停了,所以是7.

50. 输出是什么?

[1, 2, 3].map(num => {
  if (typeof num === "number") return;
  return num * 2;
});

image.png

答:C,本题考查map的用法,但是每一个元素都返回的是undefined.

51. 输出是什么?

function getInfo(member, year) {
  member.name = "Lydia";
  year = "1998";
}
const person = { name: "Sarah" };
const birthYear = "1997";
getInfo(person, birthYear);
console.log(person, birthYear);


image.png

答:A,本题考查函数传参过程中是值传递还是引用传递,传递一个对象是引用传递,引用传递会影响到引用本身,但是值传递则不会。

52. 输出是什么?

function greeting() {
  throw "Hello world!";
}
function sayHi() {
  try {
    const data = greeting();
    console.log("It worked!", data);
  } catch (e) {
    console.log("Oh no an error:", e);
  }
}
sayHi();


image.png

答:D,本题考查try catch的用法,当greeting函数返回一个错误时,便不再继续执行try中的其他语句了,并将错误字符串传给e,所以最后打印的是D。

53. 输出是什么?

function Car() {
  this.make = "Lamborghini";
  return { make: "Maserati" };
}
const myCar = new Car();
console.log(myCar.make);

image.png

答:B,返回属性时,值不是构造函数设定的值,而是返回的值,所以选B


image.png

54. 输出是什么?

(() => {
  let x = (y = 10);
})();
console.log(typeof x);
console.log(typeof y);

image.png

答:A,本题考查的是立即执行函数和函数的执行顺序问题,所以本题y是number类型的,x属于undefined类型的。

55. 输出是什么?

class Dog {
  constructor(name) {
    this.name = name;
  }
}
Dog.prototype.bark = function() {
  console.log(`Woof I am ${this.name}`);
};
const pet = new Dog("Mara");
pet.bark();
delete Dog.prototype.bark;
pet.bark();

image.png

答:A,本题考查原型链的问题,原型对象中的this也是指向实例对象的,所以ABC三个选项的第一部分都是对的,通过delete方法删除了原型对象上的bark方法,所以此时再次调用bark会报错,所以此时只有A是对的。

题目来源

github.com/lydiahallie…


相关文章
|
JavaScript
JS基础之解构赋值
解构赋值 在js中,我们经常会将对象或者数组里面的一部分数据作为参数传递给函数,如果我们使用传统的.方法会很麻烦。
|
JavaScript 前端开发
JavaScript 入门基础 - 运算符(三)
文章目录 JavaScript 入门基础 - 运算符(三) 1.什么是运算符 2.表达式和返回值 3.算术运算符概述 4. 赋值运算符 5.递增和递减运算符 5.1 递增和递减运算符概述 5.2 递增运算符 5.2.1 前置递增运算符 5.2.2 后置递增运算符 5.2.3 后置和前置运算符的区别 6. 比较运算符 7. 逻辑运算符 7.1 逻辑运算符概述 7.2 逻辑与 7.3 逻辑或 7.4
121 0
JavaScript 入门基础 - 运算符(三)
|
存储 JSON JavaScript
JavaScript 入门基础 - 变量 / 数据类型(二)
JavaScript 入门基础 - 变量 / 数据类型(二)
87 0
JavaScript 入门基础 - 变量 / 数据类型(二)
|
JavaScript 前端开发 物联网
JavaScript 入门基础 / 概念介绍(一)
JavaScript 入门基础 / 概念介绍(一)
112 0
JavaScript 入门基础 / 概念介绍(一)
|
JavaScript 前端开发 Java
JavaScript的基础使用
JavaScript的基础 一、javascript简介 JavaScript简称js,最初由网景(现在的Mozilla)公司创建,由于商标冲突原因,其标准版本命名为ECMAScript,但是一般人们还是叫JavaScript,只在谈标准的时候说到ECMAScript这个名字。值得注意的是JavaScript与java没有任何关系,就像雷峰塔(神话中镇压白娘子的塔)和雷锋。此外js(JavaScript)和jsp(java servlet pages)也没有关系。   js的工作分为两部分,一部分属于js语言本身的特性,而另一部需要依靠宿主环境(web浏览器)才能完成。 二、javascri
JavaScript的基础使用
|
JavaScript 前端开发
js 模块化基础和模块规范AMD、CMD、ES6模块
js 模块化基础和模块规范AMD、CMD、ES6模块
83 0
|
JavaScript 前端开发
原生js制作选项卡详解,适合无基础的人学习
原生js制作选项卡详解,适合无基础的人学习
109 0
原生js制作选项卡详解,适合无基础的人学习
|
JavaScript 前端开发
vue js文字跑马灯基础版本
提供两种解决思路
253 1
|
存储 JavaScript 前端开发
JavaScript基础(一篇入门)
JavaScript基础(一篇入门)
185 0
JavaScript基础(一篇入门)
|
XML JavaScript 前端开发
计算机二级web题目(5)--js(Javascript)基础
计算机二级web题目(5)--js(Javascript)基础
252 0