Sam*_*ams 6 javascript variable-assignment ecmascript-6
指定使用变量名称相同的默认值扔引用错误:
var a = 'adef';
var x = (a=a) => console.log(a);
x();
=> "ReferenceError: a is not defined"
Run Code Online (Sandbox Code Playgroud)
但这很好:
var other = 'otherdef';
var x = (a=other) => console.log(a);
x();
=> "otherdef"
Run Code Online (Sandbox Code Playgroud)
我的假设是,价值a在外部范围将被分配到新的范围.
我已经尝试使用const代替var,和class/ function代替箭头功能,但结果总是相同的(在铬63和节点6测试).
我有一种感觉的问题是,a在分配过程中"升起"等分配指的是新的"A"(其存在,但未定义)...
此行为的目的是允许一个参数默认初始化为另一个参数的值,例如:
var a = 2;
var x = (a, b = a) => console.log(a, b);
x(42); // 42 42
Run Code Online (Sandbox Code Playgroud)
可以使特殊情况a = a以不同的方式工作,但这会使重构使用此行为的函数变得更加困难(如果不重命名参数所依赖的变量,则无法重命名参数)。a
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |