218.get 和defineProperty 有什么区别?
除非您使用类,否则两者都有相似的结果。如果您使用get该属性将在对象的原型上定义,而使用Object.defineProperty()该属性将在它应用到的实例上定义。
219.Getter 和 Setter 的优点是什么?
以下是 Getter 和 Setter 的好处列表,
1.它们提供更简单的语法
2.它们用于定义计算属性或 JS 中的访问器。
3.用于提供属性和方法之间的等价关系
4.他们可以提供更好的数据质量
5.对于使用封装的逻辑在幕后做事很有用。
220.我可以使用defineProperty方法添加 getter 和 setter 吗?
是的,您可以使用该Object.defineProperty()方法添加 Getter 和 Setter。例如,下面的计数器对象使用递增、递减、加减属性,
var obj = {counter : 0}; // Define getters Object.defineProperty(obj, "increment", { get : function () {this.counter++;} }); Object.defineProperty(obj, "decrement", { get : function () {this.counter--;} }); // Define setters Object.defineProperty(obj, "add", { set : function (value) {this.counter += value;} }); Object.defineProperty(obj, "subtract", { set : function (value) {this.counter -= value;} }); obj.add = 10; obj.subtract = 5; console.log(obj.increment); //6 console.log(obj.decrement); //5
221.switch-case 的目的是什么?
JavaScript 中的 switch case 语句用于决策目的。在某些情况下,使用 switch case 语句会比 if-else 语句更方便。语法如下,
switch (expression) { case value1: statement1; break; case value2: statement2; break; . . case valueN: statementN; break; default: statementDefault; }
上面的多路分支语句提供了一种简单的方法,可以根据表达式的值将执行分派到代码的不同部分。
222.使用 swtich case 需要遵循什么规定?
以下是应注意的规定列表,
1.表达式可以是数字或字符串类型。
2.表达式不允许重复值。
3.默认语句是可选的。如果传递给 switch 的表达式与任何 case 值都不匹配,则将执行 default case 中的语句。
4.break 语句在 switch 中用于终止语句序列。
5.break 语句是可选的。但如果省略,执行将继续到下一个案例。
223.什么是原始数据类型?
原始数据类型是具有原始值(没有属性或方法)的数据。有 7 种原始数据类型。
1.string
2.number
3.boolean
4.null
5.undefined
6.bigint
7.symbol
224.访问对象属性的不同方式有哪些?
有 3 种可能的方法来访问对象的属性。
点符号:它使用点来访问属性
objectName.property
1
方括号表示法:它使用方括号进行属性访问
objectName["property"]
1
表达式符号:它使用方括号中的表达式
objectName[expression]
1
225.什么是函数参数规则?
JavaScript 函数遵循以下参数规则,
1.函数定义不指定参数的数据类型。
2.不要对传递的参数执行类型检查。
3.不要检查收到的参数数量。即,以下函数遵循上述规则,
function functionName(parameter1, parameter2, parameter3) {
console.log(parameter1); // 1
}
functionName(1);
226.什么是错误对象?
错误对象是一个内置的错误对象,它在发生错误时提供错误信息。它有两个属性:名称和消息。例如,以下函数记录错误详细信息,
try {
greeting("Welcome");
}
catch(err) {
console.log(err.name + "<br>" + err.message);
}
227.当你收到语法错误时
如果您尝试评估具有语法错误的代码,则会引发 SyntaxError。例如,下面缺少的函数参数引用会引发语法错误
try {
eval("greeting('welcome)"); // Missing ' will produce an error
}
catch(err) {
console.log(err.name);
}
228.错误对象有哪些不同的错误名称?
错误对象返回了 6 种不同类型的错误名称,
错误名称 说明
EvalError eval() 函数发生错误
RangeError 数字“超出范围”发生错误
ReferenceError 由于非法引用而导致的错误
SyntaxError 语法错误导致的错误
TypeError 类型错误导致的错误
URIError
229.错误处理中的各种语句是什么?
以下是错误处理中使用的语句列表,
1.try:该语句用于测试代码块是否有错误
2.catch:该语句用于处理错误
3.throw:此语句用于创建自定义错误。
4.finally:该语句用于在 try 和 catch 之后执行代码,而不管结果如何。
230.javascript中的两种类型的循环是什么?
1.进入Controlled Loops受控循环:在这种循环类型中,在进入循环体之前测试测试条件。例如,For 循环和 While 循环就属于这一类。
2.退出 Controlled Loops:在这种循环类型中,测试条件在循环体的末尾进行测试或评估。即,无论测试条件为真还是假,循环体都将至少执行一次。例如,do-while 循环就属于这一类。
231.什么是 nodejs?
Node.js 是一个基于 Chrome 的 JavaScript 运行时构建的服务器端平台,用于轻松构建快速且可扩展的网络应用程序。它是一个基于事件的、非阻塞的、异步的 I/O 运行时,使用谷歌的 V8 JavaScript 引擎和 libuv 库。
232.什么是 Intl 对象?
Intl 对象是 ECMAScript 国际化 API 的命名空间,它提供语言敏感的字符串比较、数字格式以及日期和时间格式。它提供对几个构造函数和语言敏感函数的访问。
233.你如何执行特定于语言的日期和时间格式化?
您可以使用Intl.DateTimeFormat对象,它是启用语言敏感日期和时间格式的对象的构造函数。让我们用一个例子来看看这个行为,
var date = new Date(Date.UTC(2019, 07, 07, 3, 0, 0));
console.log(new Intl.DateTimeFormat('en-GB').format(date)); // 07/08/2019
console.log(new Intl.DateTimeFormat('en-AU').format(date)); // 07/08/2019
234.什么是迭代器?
迭代器是一个对象,它在终止时定义一个序列和一个返回值。它使用一个next()方法实现迭代器协议,该方法返回一个具有两个属性的对象:(value序列中的下一个值)和done(如果序列中的最后一个值已被消耗,则为真)。
235.同步迭代是如何工作的?
ES6 中引入了同步迭代,它适用于以下组件集,
Iterable:它是一个可以通过其键为 Symbol.iterator 的方法迭代的对象。
迭代器:它是通过调用[Symbol.iterator]()可迭代对象返回的对象。这个迭代器对象将每个迭代的元素包装在一个对象中,并通过next()方法一一返回。
IteratorResult:next()方法返回的对象。该对象包含两个属性;该value属性包含一个迭代元素,该done属性确定该元素是否是最后一个元素。
让我们用下面的数组演示同步迭代,
const iterable = ['one', 'two', 'three']; const iterator = iterable[Symbol.iterator](); console.log(iterator.next()); // { value: 'one', done: false } console.log(iterator.next()); // { value: 'two', done: false } console.log(iterator.next()); // { value: 'three', done: false } console.log(iterator.next()); // { value: 'undefined, done: true }
236.什么是事件循环?
事件循环是一个回调函数队列。当异步函数执行时,回调函数被推入队列。JavaScript 引擎在异步函数执行完代码之前不会开始处理事件循环。
注意:即使 JavaScript 是单线程的,它也允许 Node.js 执行非阻塞 I/O 操作。
237.什么是调用栈?
调用堆栈是 javascript 解释器的一种数据结构,用于跟踪程序中的函数调用。它有两个主要动作,
1.每当你调用一个函数来执行它时,你就是在将它压入堆栈。
2.每当执行完成时,函数就会从堆栈中弹出。
让我们举个例子,它是图表格式的状态表示
function hungry() { eatFruits(); } function eatFruits() { return "I'm eating fruits"; } // Invoke the `hungry` function hungry();
上面的代码在调用堆栈中处理如下,
1.将hungry()函数添加到调用堆栈列表并执行代码。
2.将eatFruits()函数添加到调用堆栈列表并执行代码。
3.eatFruits()从我们的调用堆栈列表中删除该函数。
4.hungry()从调用堆栈列表中删除该函数,因为不再有项目。
238.什么是事件队列?
对消息或事件的发送与处理进行时间上的解耦。通俗地讲就是在队列中按先入先出的顺序存储一系列通知或请求。 发送通知时,将请求放入队列并返回。 处理请求的系统之后稍晚从队列中获取请求并处理。
返回顶部
回到第100题
回到第200题
239.什么是装饰器?
装饰器是一个表达式,其计算结果为函数,并将目标、名称和装饰器描述符作为参数。此外,它还可以选择返回一个装饰器描述符以安装在目标对象上。让我们在设计时为用户类定义管理装饰器,
function admin(isAdmin) { return function(target) { target.isAdmin = isAdmin; } } @admin(true) class User() { } console.log(User.isAdmin); //true @admin(false) class User() { } console.log(User.isAdmin); //false