GitHub上js问答摘录

本文深入探讨JavaScript的基础知识,涵盖循环类型、数据类型、事件传播、异常处理、Set对象特性及数组方法等关键主题,旨在帮助读者巩固JavaScript编程技能。

js问答 2020-2-22

  • 在 JavaScript 中,有多少种不同类型的循环?两种。for 循环和 while 循环。

  • 如何把 7.25 四舍五入为最接近的整数? Math.round(7.25)

  • 使用"use strict"。这能确保当你声明变量时必须赋值。

  • 事件传播的三个阶段是什么?

1 捕获 -> 目标 -> 冒泡
在捕获(capturing)阶段中,事件从祖先元素向下传播到目标元素。当事件达到目标(target)元素后,冒泡(bubbling)才开始。
2 它从嵌套最深的元素向外传播。
3 导致事件的最深嵌套的元素是事件的 target。你可以通过 event.stopPropagation 来停止冒泡。
  • 关闭 tab 标签页 后,sessionStorage 存储的数据才会删除。

  • json中key发生重复,会输出什么?

const obj = { a: 'one', b: 'two', a: 'three' }
console.log(obj)//输出:{ a: "three", b: "two" }
  • 只有7种内置类型:null,undefined,boolean,number,string,objectsymbol。 function 不是一种类型,函数是对象,它的类型是object。

  • JavaScript 中的一切都是: 基本类型(数据类型?)与对象。基本类型包括 boolean, null, undefined, bigint, number, string, symbol。

  • [...'Lydia'] 输出: [“L”, “y”, “d”, “i”, “a”]。扩展运算符(三个点...),用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中
    string 类型是可迭代的。扩展运算符将迭代的每个字符映射成一个元素。

  • parseInt("7*6"),返回值7。该函数检查字符串中的字符是否合法. 一旦遇到一个在指定进制中不合法的字符后,立即停止解析并且忽略后面所有的字符。

  • 通过throw语句,我么可以创建自定义异常。

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();
  • ==Set对象是值的集合,其内值不会重复,添加时有重复,其中一个就被移除。==集合内可以放任意类型数据。
const set = new Set([1, 1, 2, 3, 4]);
console.log(set);//输出:{1, 2, 3, 4}
set.add(1)
set.add("Lydia")
set.add({ name: "Lydia" })
  • import命令是编译阶段执行的,在代码运行之前。因此这意味着被导入的模块会先运行,而导入模块的文件会后执行。
    这是CommonJS中require()和import之间的区别。使用require(),您可以在运行代码时根据需要加载依赖项。 如果我们使用require而不是import,running index.js,running sum.js,3会被依次打印。

  • for-in和for-of区别:输出:A: 0 1 2 3 ☕ 💻 🍷 🍫

const myLifeSummedUp = ["☕", "💻", "🍷", "🍫"]

for (let item in myLifeSummedUp) {
  console.log(item)
}

for (let item of myLifeSummedUp) {
  console.log(item)
}
  • constlet声明的变量是具有块级作用域的,块是大括号({})之间的任何东西。
function getName(name) {
  const hasName =!!name;
  console.log(hasName);//返回:true
  //new Boolean(true)返回一个对象包装器,而不是布尔值本身。
}
  • 在Js中,不必显式地编写分号(😉,没写js引擎会在语句之后自动添加分号。这称为自动分号插入

  • 当值不是预期类型时,会抛出TypeErrors(类型错误)。当无法找到您尝试访问的值引用时,抛出ReferenceErrors(引用错误)。SyntaxError(语法错误)

  • 使用||运算符,我们可以返回第一个真值。 如果所有值都是假值,则返回最后一个。可用new Boolean([])方式查看true还是false。

const one = (false || {} || null)//返回:{}
const two = (null || false || "")//返回:""
  • 哪些方法修改了原数组? D.使用splice方法,我们通过删除,替换或添加元素来修改原始数组。 在这种情况下,我们从索引1中删除了2个元素(我们删除了’🥑’和’😍’),同时添加了✨emoji表情。
    map,filter和slice返回一个新数组,find返回一个元素,而reduce返回一个减小的值。
const emojis = ['✨', '🥑', '😍']

emojis.map(x => x + '✨')
emojis.filter(x => x !== '🥑')
emojis.find(x => x !== '🥑')
emojis.reduce((acc, cur) => acc + '✨')
emojis.slice(1, 2, '✨') 
emojis.splice(1, 2, '✨')
  • 通过展开操作符...,可以 暂开 单个可迭代的元素。
function sumValues(x, y, z) {
	return x + y + z;
}
umValues(...[1, 2, 3]);//返回 6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值