目录
钥匙要点
使用预设参数创建函数
经常询问有关JavaScript参数的问题
> JavaScript中的“参数”对象是什么?它包含一个类似数组的结构,所有参数传递给了函数。当函数需要处理可变数量的参数时,此对象很有用。重要的是要注意,“参数”对象不是一个实际的数组,但是如果需要的话,它可以转换为一个。但是,您可以使用array.from()方法或传播操作员(…)将其转换为数组。以下是一个示例:
//或
函数checkArgStype(){
>我可以在JavaScript中使用默认参数的“参数”对象?如果调用具有默认参数的函数的参数少于参数,则“参数”对象仅包含传递的实际参数,而不包含默认值。此属性被弃用,不应在新代码中使用。相反,您可以使用命名函数表达式或箭头函数。
首页 web前端 js教程 参数:JavaScript奇数

参数:JavaScript奇数

Mar 08, 2025 am 12:23 AM

arguments: A JavaScript Oddity

参数:JavaScript奇数

钥匙要点

  • 参数是每个JavaScript函数中可用的本地,类似数组的对象,其中包含调用函数时提供给该函数的所有参数。这不是一个真正的数组,因为它不具备诸如Push and Pop之类的标准数组方法。 尽管有局限性,但“参数”是一个强大的工具,允许创建接受可变数量参数的灵活函数,可以使用数组方法将其转换为真实数组,Slice。
  • >参数还具有“ callee”属性,其中包含对创建“参数”对象的函数的引用,从而使匿名函数能够引用自身。这可以用来用预设参数创建自我引用函数和函数。
  • 参数是每个函数中可用的本地,类似数组的对象的名称。这很古怪,经常被忽略,但是编程巫师的来源。所有主要的JavaScript库都会利用参数对象的功能。这是每个JavaScript程序员都应该熟悉的东西。
  • > 在任何函数中,您都可以通过变量:参数访问它,并且包含调用函数时提供给该函数的所有参数的数组。它实际上不是JavaScript数组; TypeOf参数将返回值:“对象”。您可以通过数组索引访问单个参数值,并且它具有与其他数组一样的长度属性,但是它没有Push and Pop之类的标准数组方法。
  • 创建灵活函数

即使看起来有限,也是一个非常有用的对象。例如,您可以制作接受可变数量参数的功能。格式函数,在迪恩·爱德华兹(Dean Edwards)的base2库中找到,演示了此灵活性:>

>您提供一个模板字符串,其中您使用%1至%9添加了值的值,然后提供多达9个代表要插入字符串的其他参数。例如:

上面的代码将返回字符串“和论文想知道您穿的衬衫”。 您可能注意到的一件事是,在格式的函数定义中,我们仅指定一个参数:字符串。 JavaScript允许我们将任意数量的参数传递给一个函数,无论函数定义如何,并且参数对象都可以访问所有参数。

>将其转换为真实数组

function format(string) {
  var args = arguments;
  var pattern = new RegExp("%([1-" + arguments.length + "])", "g");
  return String(string).replace(pattern, function(match, index) {
    return args[index];
  });
};
登录后复制
登录后复制
登录后复制
即使参数不是实际的JavaScript数组,我们也可以使用标准数组方法(如下)轻松地将其转换为一个数组:

使用预设参数创建函数

参数对象允许我们执行各种JavaScript技巧。这是MakeFunc函数的定义。此功能使您可以为该功能提供功能参考和任何数量的参数。它将返回一个匿名函数,该函数调用您指定的函数,并在调用匿名函数时提供预设参数与提供的任何新参数一起提供:>

function format(string) {
  var args = arguments;
  var pattern = new RegExp("%([1-" + arguments.length + "])", "g");
  return String(string).replace(pattern, function(match, index) {
    return args[index];
  });
};
登录后复制
登录后复制
登录后复制
>提供给makeFunc的第一个参数被认为是您要调用的函数的引用(是的,在这个简单的示例中没有错误检查),并且从参数数组中删除。然后,makeFunc返回一个使用函数对象的应用方法来调用指定函数的匿名函数。>

应用程序的第一个参数是指该函数将被调用;基本上,这将引用所调用函数的关键字。目前,这有点先进,所以我们将其保持无效。第二个参数是一个值数组,将转换为该函数的参数对象。 makefunc将原始值的原始数组连接到提供给匿名函数的一系列参数上,并将其提供给所谓的函数。

>说,在模板始终相同的情况下,您需要输出一条消息。为了使您避免每次调用格式函数时都必须引用模板,您可以使用MakeFunc Utility函数返回将为您调用格式并自动填写模板参数的函数:>

>您可以像这样重复调用Majortom函数:

format("And the %1 want to know whose %2 you %3", "papers", "shirt", "wear");
登录后复制

>每次调用Majortom函数时,都会使用第一个参数(已填写的模板)调用格式函数。

var args = Array.prototype.slice.call(arguments);
登录后复制
创建自我引用函数

>您可能认为这很酷,但是等等,争论还有一个惊喜。它具有另一个有用的属性:Callee。 gragments.callee包含对创建参数对象的函数的引用。我们如何使用这样的东西? gruments.callee是匿名函数可以引用自身的一种方便方式。
function makeFunc() {
  var args = Array.prototype.slice.call(arguments);
  var func = args.shift();
  return function() {
    return func.apply(null, args.concat(Array.prototype.slice.call(arguments)));
  };
}
登录后复制
>

但是,我想创建一个该功能的特殊版本,每次之间重复3次,延迟2秒。通过我的重复功能,我可以做到这一点:
var majorTom = makeFunc(format, "This is Major Tom to ground control. I'm %1.");
登录后复制
majorTom("stepping through the door");
majorTom("floating in a most peculiar way");
登录后复制
"This is Major Tom to ground control. I'm stepping through the door."
"This is Major Tom to ground control. I'm floating in a most peculiar way."
登录后复制
调用某物函数的结果是一个警报框重复3次,每个警报之间有2秒的延迟。
repeat is a function that takes a function reference, and 2 numbers. The first number is how many times to call the function and the second represents the delay, in milliseconds, between each call. Here's the definition for repeat:

登录后复制
function format(string) {
  var args = arguments;
  var pattern = new RegExp("%([1-" + arguments.length + "])", "g");
  return String(string).replace(pattern, function(match, index) {
    return args[index];
  });
};
登录后复制
登录后复制
登录后复制

经常询问有关JavaScript参数的问题

> JavaScript中的“参数”对象是什么?它包含一个类似数组的结构,所有参数传递给了函数。当函数需要处理可变数量的参数时,此对象很有用。重要的是要注意,“参数”对象不是一个实际的数组,但是如果需要的话,它可以转换为一个。但是,您可以使用array.from()方法或传播操作员(…)将其转换为数组。以下是一个示例:

函数convertargstoArray(){

var argsarray = array.from(grom(grom);

//或

//或

//或
var argsArray = [... gruments];
>}
}
}
}

> javaScript中的“ typeof”运算符是什么?它返回一个指示未评估操作数的字符串。例如,“ typeof 3”将返回“ number”和“ hello”'将返回“字符串”。

我如何在javascript中使用“ typeof”与javaScript?

您可以使用“ typeof”操作员检查传递给函数的每个参数的类型。以下是一个示例:

函数checkArgStype(){

>(var i = 0; i console.log(type of grag grag(type of grag>);

>>} } } } } } } }
第一个参数传递给函数。同样,“参数[1]”是指第二个论点,依此类推。如果没有传递参数,则“参数[0]”将是“未定义的”。

我可以在JavaScript中修改“参数”对象?但是,通常不建议这样做,因为它可能导致令人困惑和难以删除的代码。在严格的模式下,任何修改“参数”对象的尝试都会丢弃错误。
>
“参数”对象的长度属性是什么?“参数”对象的长度属性返回传递给该函数的参数的数量。当您需要迭代论点或确定通过了多少参数时,这很有用。
>

>我可以在JavaScript中使用默认参数的“参数”对象?如果调用具有默认参数的函数的参数少于参数,则“参数”对象仅包含传递的实际参数,而不包含默认值。此属性被弃用,不应在新代码中使用。相反,您可以使用命名函数表达式或箭头函数。

以上是参数:JavaScript奇数的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

前端热敏纸小票打印遇到乱码问题怎么办? 前端热敏纸小票打印遇到乱码问题怎么办? Apr 04, 2025 pm 02:42 PM

前端热敏纸小票打印的常见问题与解决方案在前端开发中,小票打印是一个常见的需求。然而,很多开发者在实...

神秘的JavaScript:它的作用以及为什么重要 神秘的JavaScript:它的作用以及为什么重要 Apr 09, 2025 am 12:07 AM

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

谁得到更多的Python或JavaScript? 谁得到更多的Python或JavaScript? Apr 04, 2025 am 12:09 AM

Python和JavaScript开发者的薪资没有绝对的高低,具体取决于技能和行业需求。1.Python在数据科学和机器学习领域可能薪资更高。2.JavaScript在前端和全栈开发中需求大,薪资也可观。3.影响因素包括经验、地理位置、公司规模和特定技能。

如何实现视差滚动和元素动画效果,像资生堂官网那样?
或者:
怎样才能像资生堂官网一样,实现页面滚动伴随的动画效果? 如何实现视差滚动和元素动画效果,像资生堂官网那样? 或者: 怎样才能像资生堂官网一样,实现页面滚动伴随的动画效果? Apr 04, 2025 pm 05:36 PM

实现视差滚动和元素动画效果的探讨本文将探讨如何实现类似资生堂官网(https://www.shiseido.co.jp/sb/wonderland/)中�...

JavaScript难以学习吗? JavaScript难以学习吗? Apr 03, 2025 am 12:20 AM

学习JavaScript不难,但有挑战。1)理解基础概念如变量、数据类型、函数等。2)掌握异步编程,通过事件循环实现。3)使用DOM操作和Promise处理异步请求。4)避免常见错误,使用调试技巧。5)优化性能,遵循最佳实践。

JavaScript的演变:当前的趋势和未来前景 JavaScript的演变:当前的趋势和未来前景 Apr 10, 2025 am 09:33 AM

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

如何使用JavaScript将具有相同ID的数组元素合并到一个对象中? 如何使用JavaScript将具有相同ID的数组元素合并到一个对象中? Apr 04, 2025 pm 05:09 PM

如何在JavaScript中将具有相同ID的数组元素合并到一个对象中?在处理数据时,我们常常会遇到需要将具有相同ID�...

前端开发中如何实现类似 VSCode 的面板拖拽调整功能? 前端开发中如何实现类似 VSCode 的面板拖拽调整功能? Apr 04, 2025 pm 02:06 PM

探索前端中类似VSCode的面板拖拽调整功能的实现在前端开发中,如何实现类似于VSCode...

See all articles