JavaScript编程问题与解答合集

1、假设 angle 是一个以度为单位的角度,在加上或减去其他角度后,它呈现出任意值。你想将其规范化,使其介于 0(包含)到 360(不包含)之间。如何使用 % 运算符来实现这一点?

可以使用公式 (angle % 360 + 360) % 360 来将角度规范化到 0(包含)到 360(不包含)之间。

2、列出尽可能多的在 JavaScript 中生成包含单个字符的字符串的方法。

  1. 若源文件使用合适的编码(如 UTF - 8),可直接输入或粘贴该字符,例如:
    js let singleChar = 'a';

  2. 使用 \u{code point} 表示法,前提是要保持文件为 ASCII 格式,例如:
    js let singleChar = '\u{1F310}';

    注意原答案中的例子生成的是包含多个字符的字符串,这里修改为生成单个字符的示例。

3、给出一个现实的示例,其中一个模板字符串包含一个嵌入式表达式,该表达式又包含另一个带有嵌入式表达式的模板字符串。

greeting = `Hello, ${firstname.length > 0 ? `${firstname[0]}. ` : '' } ${lastname}`

4、声明一个数组,其元素位于索引位置0、0.5、1、1.5和2处。

在JavaScript中,数组的索引必须是整数,所以无法直接声明索引为 0.5 1.5 的数组元素。若只考虑整数索引 0 1 2 ,可使用数组字面量声明,如:

const arr = [元素0的值, 元素1的值, 元素2的值];

或者使用 Array.of 方法声明,如:

const arr = Array.of(元素0的值, 元素1的值, 元素2的值);

若要设置非整数索引,这不会作为数组元素,而是作为对象属性,如:

const arr = [];
arr[0] = 元素0的值;
arr[0.5] = 元素0.5的值;
arr[1] = 元素1的值;
arr[1.5] = 元素1.5的值;
arr[2] = 元素2的值;

5、创建几个代表人物的对象,并将它们存储在变量harry和sally中。为每个人添加一个friends属性,该属性包含一个数组,其中存储着他们最好的朋友。假设harry是sally的朋友,sally是harry的朋友。当你使用console.log直接记录每个对象时会发生什么?当你使用console.log记录包含对象的字符串时会发生什么?当你调用JSON.stringify时会发生什么?

当直接使用 console.log 记录对象时,控制台会很好地显示对象内容。
当使用 console.log(\ harry=${harry}`) 这种方式记录包含对象的字符串时,会得到无用信息,如 harry=[object Object] 。 调用 JSON.stringify 时,它会将 JavaScript 对象转换为 JSON 字符串,但会丢弃值为 undefined 的对象属性,将数组中值为 undefined 的元素转换为 null 。 由于这里两个对象相互引用, JSON.stringify` 会因循环引用而报错,无法正常生成 JSON 字符串。

6、语句 if (x === 0) console.log(‘zero’) else console.log(‘nonzero’) 有什么问题?如何修复这个问题?

该语句的问题是缺少大括号,在 JavaScript 中,若 if - else 语句块包含多条语句或仅一条语句但为了代码的可读性和规范性,通常需要用大括号将语句块包裹起来。修复方法是添加大括号,正确的写法为:

if (x === 0) {
  console.log('zero');
} else {
  console.log('nonzero');
}

7、考虑语句 let x = a,下一行以哪些标记开头会阻止插入分号?哪些在实际程序中可能会出现?

下一行以 ( [ 、模板或正则表达式字面量开头会阻止插入分号。实际程序中可能出现的是 ( [ ,例如:

let a = x (console.log(6 * 7))

let a = x [1, 2, 3].forEach(console.log)

虽然模板或正则表达式字面量也会阻止插入分号,但在实际中很少会写出

let a = x `Fred`.toUpperCase()
</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值