函数作用域 if 语句
Function scope if statements
我正在尝试不寻常的Javascript'模式',如果不希望在父作用域中声明变量,我想到了一种可能巧妙的块范围方法。
例如,代替:
function someFunction () {
var x, t;
for (x = 0; x < 10000; x += 1) {
if (true) {
t = x;
}
}
}
可以使用以下命令保存额外的父变量:
function someFunction () {
var x;
for (x = 0; x < 10000; x += 1) {
if (true) { void function () {
var t = x;
}(); }
}
}
但是,我的 jsperf ( http://jsperf.com/scoped-if ) 表明,当重复使用时,这可能会对性能产生负面影响。显然,这个结果决定了上述不是实用的模式,除非谨慎执行。
我知道缓慢可能是重复创建和破坏执行上下文 (1 + 10000),而第一个只涉及 1。
我的问题是,鉴于上述条件(未在循环中使用),这种模式是否仍然有用,为什么创建上下文的成本如此之高?
是的,IIFE 是模拟块范围的合理方法。
更好的方法是使用 let
,如有必要,使用 ES6 转译器:
function someFunction () {
var x;
for (x = 0; x < 10000; x += 1) {
if (true) {
let t = x;
// Do something with t here
}
// because it is not defined here
}
// or here
}
// and even a var wouldn't be defined here
let
的 ES6 兼容性表
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 如何在 API 调用后和 if 语句中启用提交按钮
- 带有多个elseif的Javascript if语句
- Sharepoint JScript if语句未执行
- Javascript:If-then语句在函数中不起作用
- for循环中的javascript if语句找不到==
- jquery if语句返回return wong语句
- 在if语句下的html中使用javascript变量
- 将错误与if语句混淆
- 如何检查if/else语句中的随机条件
- 循环通过数组的If语句不起作用
- jQuery模板中的If语句
- 如何从数据库中回显If语句
- 如何减少if语句的数量
- Node.js-承诺和锥形语句(if、switch等)-如何构建
- 如何在嵌套ng重复指令中使用控制语句(if语句)
- 如何创建语句if包含"&"
- If语句- If主体有一个类remove在滚动原生javascript
- Javascript中的if语句- if - else问题