首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript基础知识

JavaScript基础知识
EN

Stack Overflow用户
提问于 2012-06-29 03:05:11
回答 2查看 297关注 0票数 3
代码语言:javascript
复制
function Add(a, b) {      }

如果我们调用一个javascript函数,比如- onclick="Add(1)"

为什么我们只向函数传递了一个参数,甚至两个以上的参数(在上面的例子中),但我们没有得到错误?Java script如何处理上述场景?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-29 03:09:17

Javascript是一种动态的弱类型语言。因此,它不会严格执行方法签名。

Add是一个函数对象。它有一个名为arguments的属性,它是一个类似数组的对象,其中包含您传入的参数。为了方便起见,它还将创建名为ab的局部变量,并将arguments中的第一个和第二个元素赋给它们。在只有一个输入参数的情况下,b将是未定义的。

因此,Javascript将对待

代码语言:javascript
复制
 Add(1)

代码语言:javascript
复制
 Add(1, undefined)

几乎一模一样。这里的不同之处在于,arguments变量的长度将是2而不是1。不过,从纯粹实用的角度来看,它们是完全相同的。

票数 4
EN

Stack Overflow用户

发布于 2020-02-12 02:57:13

这是因为在Javascript中使用提升的概念。在您的Javascript代码实际执行之前,解析器会运行您的代码,并识别您在何处创建了函数以及您在何处创建了变量。在您的代码开始由Javascript引擎逐行执行之前,Javascript引擎已经在内存中为代码中编写的变量和函数预留了空间。因此,在代码开始执行之前,所有的变量和函数都已经在内存中可用。因此,我们将以有限的方式访问它们。

当Javascript引擎在您的代码中找到一个函数时,它会设置一个内存空间,并将整个函数定义放在其中。

但是,当它在你的代码中找到一个变量时,它会设置一个内存空间;给它一个变量的名称,并设置一个占位符,即‘undefined’作为它的值(而不是实际分配的值)。

请查看下面的链接,以便更好地了解正在发生的事情- https://developer.mozilla.org/en-US/docs/Glossary/Hoisting

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11251251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档