JavaScript基础知识

时间:2012-06-28 19:05:11

标签: javascript

function Add(a, b) {      }

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

为什么即使我们只传递一个参数甚至超过2个参数(如果是上例),我们也不会收到错误? Java脚本如何处理上述场景?

2 个答案:

答案 0 :(得分:4)

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

Add是一个Function对象。它有一个名为arguments的属性,它是一个类似于数组的对象,它包含您传入的参数。为方便起见,它还将创建名为ab的局部变量并赋值arguments中的第一个和第二个元素。如果您只有一个输入参数,b将是未定义的。

所以,Javascript会处理

 Add(1)

 Add(1, undefined)
几乎完全相同。这里的区别在于arguments变量的长度为2而不是1.从纯粹实用的角度来看,它们的结构非常相似。

答案 1 :(得分:0)

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

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

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

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