JavaScript函数内是否需要声明变量?未显式声明函数参数为何仍可正常运行?
关于你JavaScript疑问的解答
嘿,咱们一步步来解开这两个疑惑:
1. 是否需要在函数内部声明变量?
这得分情况来看:
- 如果变量是函数的参数(就像你代码里的
a),那完全不需要在函数内部再声明它。因为定义函数时的参数列表,已经相当于在函数的局部作用域里创建了这个变量,它会自动接收调用函数时传入的值。 - 如果是函数内部自己使用的临时变量(比如你要在函数里存一个计算结果),那必须用
let/const/var声明!不然在非严格模式下会意外创建全局变量,严格模式下直接报错,这是非常不好的编程习惯。
举个例子,要是你想在函数里加个临时变量:
function positiveOrNegative(a) { // 这里必须声明temp变量 const temp = Math.abs(a); if (a > 0) { mainHeading.textContent = " 'a' is a positive number"; } // ...其他逻辑 }
2. 没像let a这样声明变量a,函数仍能正常运行的原因
这就和上面说的函数参数有关啦!当你写function positiveOrNegative(a)时,a是这个函数的形式参数(简称形参)。JavaScript会在函数被调用时,自动在函数的局部作用域里为这个形参创建变量,并把你调用时传入的实参(比如你代码里的-5)赋值给它。
换句话说,函数的参数本身就是已经被声明好的局部变量,所以你不需要再在函数里写let a或者const a,直接用就行。你调用positiveOrNegative(-5)时,a就被赋值为-5,函数里的判断逻辑自然能正常执行。
额外提醒:如果不是函数参数,你直接在代码里用未声明的变量(比如随便写个b = 10),在旧版JS里会隐式把它变成全局变量,这很容易引发bug;在严格模式('use strict')下,这种写法会直接抛出错误。所以除了函数参数,其他变量一定要记得声明。
内容的提问来源于stack exchange,提问作者Ritik Rajput
相关产品推荐
相关产品推荐

