JavaScript函数的形参是否是通过var关键字声明的?
JavaScript函数的形参是否是通过var关键字声明的?
可以通过两个变量核心特性交叉验证推导结论:
- 从重新赋值特性初筛
JavaScript声明变量的关键字共三类:var、let、const。const声明的变量不支持重新赋值,而函数形参支持重新赋值,首先可以排除const,初步判断形参的声明逻辑和var或let一致。
对应验证代码:function test1(a) { a = 3 // 形参重新赋值 console.log('a', a) // 输出3,运行正常 } test1(3) - 从重复声明特性确认
let声明的变量有严格的同作用域重名校验,重复声明会直接抛语法错误;var则没有这个限制,支持同作用域下重复声明同名变量。
实际测试可知,函数内部可以直接用var重复声明和形参同名的变量,运行全程无报错,这一表现完全匹配var的声明特性,因此可以确定:函数形参的声明逻辑等价于通过var关键字声明。
对应验证代码:function test1(a) { var a = 1 // 用var重复声明同名形参 } test1(3) // 运行无任何报错
内容的提问来源于stack exchange,提问作者J.kim
相关产品推荐
相关产品推荐

