JavaScript中的实用但生僻知识点

"try...catch"语句块,用于捕获和处理可能发生的异常;"arguments"是JavaScript中的一个特殊对象,它包含了函数调用时传递的所有参数;将arguments对象改成数组; Array.from() 是一个用于从类数组对象或可迭代对象创建新数组的静态方法; throw new Error()是一个用于抛出异常的关键字和语句。console.time()方法是 console 对象的一个方法,用于在开发过程中测量代码执行所需的时间。

try...catch

有一个"try...catch"语句块,用于捕获和处理可能发生的异常。下面是对"try...catch"语句块的介绍:

"try...catch"语句块是一种错误处理机制,可用于捕获并处理在"try"代码块中引发的异常。它的基本语法如下:

javascript 复制代码
try {
  // 可能引发异常的代码
} catch (error) {
  // 异常处理逻辑
}

在"try"代码块中,我们可以放置可能会抛出异常的代码。如果在执行该代码块时发生了异常,JavaScript引擎会立即跳转到相应的"catch"块,并将错误信息传递给"error"参数。

以下是一个简单的示例:

javascript 复制代码
try {
  const result = 10 / 0; // 这里会引发一个除以零的异常
  console.log(result); // 不会执行到这里
} catch (error) {
  console.log("发生了一个错误:" + error); // 捕获并处理异常
}

在这个示例中,我们试图将10除以0,这会引发一个除以零的异常。由于我们在"try"块内捕获了该异常,控制权会立即转移到相应的"catch"块。在"catch"块中,我们可以根据需要处理异常情况。

"try...catch"语句块还支持可选的"finally"块,用于指定无论是否发生异常都需要执行的代码。"finally"块中的代码在"try"和"catch"块执行完毕后执行。

javascript 复制代码
try {
  // 可能引发异常的代码
} catch (error) {
  // 异常处理逻辑
} finally {
  // 最终要执行的代码
}

"finally"块通常用于释放资源或执行清理操作,无论是否发生异常都需要执行的逻辑。

希望这个简单的介绍能够帮助你理解JavaScript中的"try...catch"语句块,以及它在错误处理中的作用。 、

arguments

"arguments"是JavaScript中的一个特殊对象,它包含了函数调用时传递的所有参数。以下是对"arguments"对象的介绍:

在JavaScript中,每个函数都有一个名为"arguments"的内置对象,它表示当前函数调用时传递的所有参数。"arguments"对象是一个类数组对象,具有length属性和从0开始的数字索引。我们可以使用这些索引访问函数的参数。

例如,以下是一个简单的函数,它接受两个参数并将它们相加:

css 复制代码
javascriptCopy Code
function add(a, b) {
  return a + b;
}

在这个函数中,"a"和"b"是正式参数,它们在函数定义时声明。但是,我们也可以通过"arguments"对象访问这些参数,如下所示:

ini 复制代码
javascriptCopy Code
function add() {
  const a = arguments[0];
  const b = arguments[1];
  return a + b;
}

// 调用add函数,传递参数2和3
const sum = add(2, 3);
console.log(sum); // 输出5

在这个版本的"add"函数中,我们没有定义正式参数,而是使用"arguments"对象来访问传递给函数的参数。在函数体内,我们通过"arguments[0]"和"arguments[1]"分别访问第一个和第二个参数,然后将它们相加并返回结果。

需要注意的是,"arguments"对象不是一个真正的数组,因此不能使用数组的一些方法和属性。如果需要使用这些方法或属性,我们可以将"arguments"对象转换为一个真正的数组。

希望这个简单的介绍能够帮助你理解JavaScript中的"arguments"对象以及它如何表示函数调用时传递的所有参数。

将arguments对象改成数组

虽然"arguments"对象类似于一个数组,但它并不是一个真正的数组,因此不能使用数组的一些方法和属性。如果需要使用这些方法或属性,我们可以将"arguments"对象转换为一个真正的数组。以下是一种将"arguments"对象转换为数组的方法:

javascriptCopy 复制代码
function myFunction() {
  const args = Array.prototype.slice.call(arguments);
  console.log(args);
}

myFunction(1, 2, 3); // [1, 2, 3]

在这个例子中,我们使用了"slice"方法,该方法用于从一个数组中创建一个新的子数组。通过调用"Array.prototype.slice.call(arguments)",我们将"arguments"对象转换为一个真正的数组。然后,我们将该数组存储在一个名为"args"的变量中,并打印出来。

除了使用"Array.prototype.slice.call(arguments)"之外,我们还可以使用ES6的扩展运算符("...")来将"arguments"对象转换为数组。以下是使用扩展运算符的示例:

javascriptCopy 复制代码
function myFunction(...args) {
  console.log(args);
}

myFunction(1, 2, 3); // [1, 2, 3]

在这个例子中,我们使用了扩展运算符("..."),该运算符将所有的函数参数收集到一个数组中。在函数体内,我们可以像操作一个普通的数组一样操作"args"数组。

还可以使用Array.from()

js 复制代码
    const arr = Array.from(arguments)
    console.log(Object.prototype.toString.call(arguments));

希望这个简单的介绍能够帮助你将"arguments"对象转换为一个真正的数组,并开始使用数组的一些方法和属性。

Array.from()

在JavaScript中,Array.from() 是一个用于从类数组对象或可迭代对象创建新数组的静态方法。它提供了一种简洁的方式来将类数组对象(如函数的 arguments 对象)或可迭代对象(如 Set 或 Map)转换为真正的数组。以下是对 Array.from() 方法的详细介绍:

基本语法如下:

css 复制代码
javascriptCopy Code
Array.from(arrayLike[, mapFunction[, thisArg]])
  • arrayLike:需要转换为数组的类数组对象或可迭代对象。
  • mapFunction(可选):对每个元素进行映射操作的函数,类似于数组的 map() 方法。
  • thisArg(可选):执行 mapFunction 时的 this 值。

下面是一些示例,演示了如何使用 Array.from() 方法:

从字符串创建数组:

python 复制代码
javascriptCopy Code
const str = 'hello';
const arr = Array.from(str);
console.log(arr); // ['h', 'e', 'l', 'l', 'o']

从类数组对象创建数组:

javascript 复制代码
javascriptCopy Code
function sum() {
  return Array.from(arguments).reduce((acc, val) => acc + val, 0);
}

console.log(sum(1, 2, 3)); // 6

使用映射函数:

javascript 复制代码
javascriptCopy Code
const set = new Set([1, 2, 3]);
const arr = Array.from(set, x => x * x);
console.log(arr); // [1, 4, 9]

从可迭代对象创建数组:

lua 复制代码
javascriptCopy Code
const map = new Map([[1, 'one'], [2, 'two']]);
const arr = Array.from(map);
console.log(arr); // [[1, 'one'], [2, 'two']]

Array.from() 方法提供了一种方便的方式来将各种类型的数据转换为数组,同时还可以在转换过程中应用映射函数。这使得我们能够更灵活地处理不同类型的数据,并且能够利用数组的各种方法和属性进行进一步的操作。

希望这个简单的介绍能够帮助你理解 JavaScript 中的 Array.from() 方法。

throw new Error()

在 JavaScript 中,throw new Error() 是一个用于抛出异常的关键字和语句。

当代码执行到 throw 语句时,程序会立即停止,并且控制权转移到最近的异常处理程序(例如 try...catch 块)。

new Error() 则是一个构造函数,用于创建一个新的错误对象。它可以接受一个字符串参数,用于描述错误信息。我们可以将该错误对象作为 throw 语句的参数,以便在抛出异常时传递错误信息。

下面是一个示例,演示了如何使用 throw new Error()

javascriptCopy 复制代码
function add(a,b){
    if(arguments.length !== 2 ){
        throw new Error('传递的参数有误');
    }
    if(typeof a!=='number' || typeof b!=='number'){
        throw new Error('必须是整数');
    }
    return a + b
}

在这个例子中,我们定义了一个 add() 函数,用于计算两个数字的和。如果传递的参数不是两个,就会显示传递的参数有误。

通过使用 throw new Error(),我们可以在代码中显式地引发异常并传递错误信息,从而使代码更加健壮和可靠。

希望这个简单的介绍能够帮助你理解 JavaScript 中的 throw new Error()

console.time()

在 JavaScript 中,console.time() 方法是 console 对象的一个方法,用于在开发过程中测量代码执行所需的时间。

console.time() 方法接受一个参数,表示计时器的名称。开始调用 console.time() 时,会创建一个与该名称相关联的计时器,并开始计时。要停止计时并获取时间差,可以使用 console.timeEnd() 方法,并传入相同的名称作为参数。

下面是一个示例,展示了如何使用 console.time()console.timeEnd()

javascriptCopy 复制代码
console.time('myTimer');

// 模拟一些耗时操作
for (let i = 0; i < 1000000; i++) {
  // do something
}

console.timeEnd('myTimer');

在这个例子中,我们使用 console.time() 开始一个名为 "myTimer" 的计时器。然后,我们模拟了一些耗时的操作(这里只是一个简单的循环),最后使用 console.timeEnd() 结束计时并输出时间差。(也可以计算函数的运行时长,如下示例:)

js 复制代码
console.time('函数名称');
console.timeEnd('函数名称');

运行上述代码后,你将在控制台中看到类似以下的输出:

Copy 复制代码
myTimer: 17.483ms

这表示代码执行所需的时间为 17.483 毫秒。

通过使用 console.time()console.timeEnd(),我们可以方便地对代码执行时间进行测量和分析,在性能优化和调试过程中非常有用。

需要注意的是,在计时器名称中应该使用唯一的标识符,以避免与其他计时器冲突。同时,console.time()console.timeEnd() 方法必须成对出现,否则会导致不正确的计时结果。

相关推荐
M_emory_14 分钟前
解决 git clone 出现:Failed to connect to 127.0.0.1 port 1080: Connection refused 错误
前端·vue.js·git
Ciito17 分钟前
vue项目使用eslint+prettier管理项目格式化
前端·javascript·vue.js
成都被卷死的程序员1 小时前
响应式网页设计--html
前端·html
fighting ~1 小时前
react17安装html-react-parser运行报错记录
javascript·react.js·html
老码沉思录1 小时前
React Native 全栈开发实战班 - 列表与滚动视图
javascript·react native·react.js
abments1 小时前
JavaScript逆向爬虫教程-------基础篇之常用的编码与加密介绍(python和js实现)
javascript·爬虫·python
mon_star°1 小时前
将答题成绩排行榜数据通过前端生成excel的方式实现导出下载功能
前端·excel
Zrf21913184551 小时前
前端笔试中oj算法题的解法模版
前端·readline·oj算法
老码沉思录1 小时前
React Native 全栈开发实战班 - 状态管理入门(Context API)
javascript·react native·react.js
文军的烹饪实验室2 小时前
ValueError: Circular reference detected
开发语言·前端·javascript