声明(Declarations)
undefined值在布尔类型环境中会被当作false。
数值类型环境中undefined值会被转换为NaN。
对一个空变量求值时,空值 null 在数值类型环境中会被当作0来对待,而布尔类型环境中会被当作false
JavaScript 变量感觉上是被“提升”或移到了所有函数和语句之前。提升后的变量将返回 undefined 值,所以即使在使用或引用某个变量之后存在声明和初始化操作,这个被提升的引用仍将得到 undefined 值。
由于存在变量声明提升,一个函数中所有的var语句应尽可能地放在接近函数顶部的地方。这大大地提升了程序代码的清晰度。
(在 ECMAScript 2015 中,let(const)将不会提升变量到代码块的顶部。因此,在变量声明之前引用这个变量,将抛出错误ReferenceError。这个变量将从代码块一开始就处在一个“暂时性死区”,直到这个变量被声明为止。)
对于函数,只有函数声明会被提升到顶部,不包括函数表达式。
/* 函数声明 */foo(); // "bar" function foo() { console.log("bar");} /* 函数表达式 表达式定义的函数,成为匿名函数。匿名函数没有函数提升。*/ baz(); // TypeError: baz is not a function//此时的"baz"相当于一个声明的变量,类型为undefined。由于baz只是相当于一个变量,因此浏览器认为"baz()"不是一个函数。var baz = function() { console.log("bar2");};
全局对象是 window,你可以通过指定 window 或 frame 的名字,从一个 window 或 frame 访问另一个 window 或 frame 中声明的变量。例如,设想一个叫 phoneNumber 的变量在文档里被声明,你可以在子框架里用 parent.phoneNumber 来引用它。
常量(Constants)
在同一作用域中,不能用与变量或函数同样的名字来命名常量。然而,对象属性是不受保护的,所以下面的语句执行没有问题。
const MY_OBJECT = {"key": "value"};MY_OBJECT.key = "otherValue";
数据结构和类型
六种是 原型 的数据类型 以及 Object 对象
Objects 和 functions 是本语言的其他两个基本要素。你可以将对象视为存放值的命名容器,而将函数视为你的应用程序能够执行的过程(procedures)。
在涉及加法运算符(+)的数字和字符串表达式中,JavaScript 会把数字值转换为字符串。
x = "The answer is " + 42 // "The answer is 42"y = 42 + " is the answer" // "42 is the answer"
新闻热点
疑难解答
图片精选