我们也可以这样做,来实现相同的功能:
const mul = new Function("a", "b", "return a * b")传递给 Function 的参数形成函数的参数和主体 。变量 mul 成为函数名称 。
并且,最后一个参数将是函数的主体,而最后一个参数之前的参数将成为函数的参数 。
在在 mul 中 。 "a" 和 "b" 是函数将接收的参数,"return a * b" 是函数的主体 。它实现将 "a" 和 "b" 相乘并返回结果 。
我们使用 mul(…) 调用该函数,并传入参数:
const mul = new Function("a", "b", "return a * b")console.log(mul(7, 8)) // 56根据 MDN:
Function 构造函数创建一个新的 Function 对象 。直接调用此构造函数可用动态创建函数,但会遭遇来自 eval 的安全问题和相对较小的性能问题 。然而,与 eval 不同的是,Function 构造函数只在全局作用域中运行 。五、数组解构我们可以通过使用元素的索引号来分解数组中的元素 。
const arr = [1, 2, 3]元素 1 、2 、3 的索引分别为 0、1、2,即:arr[0] // 1在日常开发中,我们最常使用的是对象解构:let o = { prop: 1}o["prop"] // 1// 解构const {prop} = oprop // 1【这13个好用的JavaScript特性,估计你都没用过】所以,我们将解构用于数组上:const arr = [1, 2, 3]const { 0: firstA, 1: secA, 2: thirdA } = arrfirstA // 1secA // 2thirdA // 3所以我们可以使用索引号来提取元素 。索引是定义数组中元素位置的属性 。const arr = [1, 2, 3]相当于:const arr = { 0: 1, 1: 2, 2: 3, length: 3}数组也是对象,这就是为什么要对其进行对象分解的原因,但是还有一种特殊的数组分解语法:const [first, second, third] = arrfirst // 1second // 2third // 3注意:应尽可能避免知道数组中的特定位置信息(开始、结束索引是什么) 。六、使用 length 属性减少数组内容数组中的 length 属性表示数组中元素的数目 。
const arr = [1, 2, 3]arr.length // 3减小 length 属性值,会使 JS 引擎将数组元素个数减少到与 length 属性的值相等 。const arr = [1, 2, 3]arr.length // 3arr.length = 1arr // [1]arr 的 length 属性值更改为 1,因此 arr 减少了元素个数,使其等于 length 属性值 。如果增加 length 属性,则 JS 引擎将添加元素(未定义的元素)以使数组中的元素数量达到 length 属性的值 。
const arr = [1, 2, 3]arr.length // 3arr.length = 1arr // [1]arr.length = 5arr // [1, empty × 4]arr 中的元素只有一个,然后我们将长度增加到 5,因此又增加了 4 个元素长度,使元素数达到 5 。七、Arguments我们可以使用 arguments 对象获取传递给函数的参数,而无需在函数中明确定义 arguments 变量:
function myFunc() { console.log(arguments[0]) // 34 console.log(arguments[1]) // 89}myFunc(34,89)arguments 对象是数组索引的 。也就是说,属性是数字,因此可以通过键引用进行访问 。arguments 对象是从 Arguments 类实例化的,该类具有一些很酷的属性 。
arguments.callee.name 指当前正在调用的函数的名称 。
function myFunc() { console.log(arguments.callee.name) // myFunc}myFunc(34, 89)arguments.callee.caller.name 是指调用当前执行函数的函数的名称 。
function myFunc() { console.log(arguments.callee.name) // myFunc console.log(arguments.callee.caller.name) // myFuncCallee}(function myFuncCallee() { myFunc(34, 89)})()
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- linux的TCP连接数量最大不能超过65535个吗,那服务器是如何应对百万千万的并发的?
- 吃薄荷叶有什么坏处,喝薄荷叶有什么好处
- 千种明日叶日文,明日叶的食用禁忌
- 加纳利子的营养功效,鹦鹉吃加纳利子的好处
- 金丝皇菊生长周期,喝金丝皇菊的好处
- 做 PPT 时选择哪种字体比较好?看完这篇文章你就懂了!超干货
- Linux 应急响应入门:入侵排查应该这样做
- 这样讲API网关,你应该能明白了吧
- 便秘吃什么好 六款食疗方有效治疗便秘
- 消化不良吃什么好 首选9款食疗粥
