我需要帮助理解我正在学习的东西。我的代码的某些行设置了一个变量 name ,它保存用户的名称,并在单击某个元素时设置。
我发现的问题是即使没有点击元素,用户仍然可以在控制台中访问它。
我认为我的代码出了问题,但我发现同样在另一个网站上访问它;例如,访问facebook上的变量会产生STATIC_URL
。其他网站会产生空字符串,例如"_e_0MDe"
。
为什么会这样? 谢谢。
答案 0 :(得分:4)
window.name
只是DOM API的一部分。 Facebook必须设置它。
如果在裸脚本标记中声明变量,则将其视为Optional.ofNullable(myObj).ifPresent(obj -> {
myObj.doSomething();
myObj.doOtherThing();
});
window
为了防止使用函数创建新范围(或使用<script>
var name = 'foo';
console.log(window.name); // "foo"
</script>
)
let
答案 1 :(得分:0)
与许多脚本语言一样,JavaScript在变量声明和初始化中可能非常松散。这样可以快速开发,但也意味着您必须了解scoping。
您可能会看到的是全球范围内的碰撞。默认情况下,浏览器有一个名为window
的全局对象。此对象可以在您声明的任何函数中的任何位置使用。
当您未使用其中一个保留字(var
,let
,function
,class
,import
初始化某个块中的变量时,const
),可以使用全局范围。例如,以下内容是等效的:
name = 'foo';
window.name = 'foo';
为了帮助避免语法错误,开发人员通常会在代码顶部添加一个神奇的短语:
"use strict";
可以在John Resig的strict mode网站上找到更多信息。