为什么我的javascript函数没有抛出错误?

cac*_*der 4 javascript function global-variables evaluate window-object

在调用我的函数之后,我惊讶于我的函数没有因为有一个变量并且在函数范围内使用未定义的变量而引发错误.

我的问题:为什么我的函数没有抛出未定义,错误等?不应该抛出错误因为"长度"不在我的函数参数中吗?我知道,如果我将"长度"切换到"高度",它将起作用.

如果有人可以解释javascript如何逐步解释这个功能,这对我有帮助.这是我的代码:

function areaRectangle(width, height) {
   aRectangle = width * length;
   console.log("The area of the rectangle is: " + aRectangle);
}
areaRectangle(10, 7); # The area of the rectangle is: 0
Run Code Online (Sandbox Code Playgroud)

a s*_*ude 6

因为它使用的window.length属性恰好为0 而不是参数或变量.


wmo*_*ock 5

这取决于您执行此功能的环境.

如果您在浏览器中执行此操作,似乎全局上下文中有一个长度属性,其值为数值.当您在控制台中执行函数并尝试访问长度时,由于函数中未定义长度,因此JavaScript引擎将在全局上下文中查找length变量(因为关闭).

如果您在Node中执行此操作,您会注意到抛出错误,因为Node中的全局上下文没有length属性.