'use strict';不允许我使用The with statement。
背后的原因是什么?
with (module.init){
//Detect user device
detectUserDevice();
//check if Device is touchable
isTouchable();
//check if browser supports webSocket
webSocket();
//check if browser supports indexedDB
indexedDBsupport();
//check if browser supports localStorage
checklokalStorage();
}
是没有可能的代码重构吗?
//Detect user device
module.init.detectUserDevice();
//check if Device is touchable
module.init.isTouchable();
//check if browser supports webSocket
module.init.webSocket();
//check if browser supports indexedDB
module.init.indexedDBsupport();
//check if browser supports localStorage
module.init.checklokalStorage();
答案 0 :(得分:0)
来自MDN:
不推荐使用with,并且在ECMAScript 5 strict中禁止使用 模式。建议的替代方法是分配其对象 要访问临时变量的属性。
所以你可以这样做:
var mod = module.init;
mod.detectUserDevice();
mod.isTouchable();
mod.webSocket();
mod.indexedDBsupport();
mod.checklokalStorage();
答案 1 :(得分:0)
strict mode禁止这是错误的原因,因此您无法在with
中使用strict mode
首先,严格模式禁止使用。与之相关的问题是任何问题 块内的名称可能映射到对象的属性 传递给它,或传递给周围(甚至全局)范围内的变量, 在运行时:事先不可能知道哪个。严格的模式 使用语法错误,因此没有机会在with中使用 在运行时引用未知位置: