相关疑难解决方法(0)

如何避免意外地隐式引用全局对象上的属性?

是否可以在没有with(global)所有脚本默认具有的隐式上下文的情况下执行代码块?例如,在浏览器中,是否可以通过任何方式设置脚本,使诸如

const foo = location;
Run Code Online (Sandbox Code Playgroud)

抛出

未捕获ReferenceError:未定义位置

而不是访问window.location,何时location未先声明?缺少这一点,有没有办法使这种隐式引用导致某种警告?在编写代码时,它可能是错误的来源(见下文),因此有一种防范它的方法可能会很有用。

(当然,由于普通的作用域规则,可以使用constlet或在内部块中声明另一个具有相同名称的变量,以确保使用该变量名称引用的是新变量而不是global属性,但这不是一样。)

这可能类似于询问是否可以从实际 with语句中停止引用属性:

const obj = { prop: 'prop' };
with (obj) {
  // how to make referencing "prop" from somewhere within this block throw a ReferenceError
}
Run Code Online (Sandbox Code Playgroud)

众所周知,with不应该首先使用它,但是不幸的是,当谈到时,我们似乎别无选择with(global),因为它偶尔会节省一些字符,但会浪费一些经常弹出的错误:1 2 3 4 5 6。例如:

(这里的问题:window.status是保留属性-分配给它时,它会将分配的表达式强制转换为字符串)

with阻止或禁止显式使用此类错误的原因相同,但with(global)即使在严格模式下,隐式错误也继续引起问题,因此找出解决方法将非常有用。

javascript scope with-statement

11
推荐指数
1
解决办法
511
查看次数

onclick调用hide-div函数不起作用

我一直在与这段简单的代码作斗争.我正在尝试用一个<button>简单的JavaScript函数来隐藏一个<div>.

HTML:

<button type="button" onclick="close('wrong')">OK</button>
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

function close(ID)
{
    document.getElementById(ID).style.display="none";
}
Run Code Online (Sandbox Code Playgroud)

我确信这是非常简单的事情,我不能,因为我的生活,找到它.

html javascript onclick

2
推荐指数
1
解决办法
3910
查看次数

标签 统计

javascript ×2

html ×1

onclick ×1

scope ×1

with-statement ×1