二、变量
变量是用于存储数据(如数字或字符串)的容器,因此它们可以在脚本中多次使用。
声明变量
要创建一个变量,可以使用关键字var
,后跟一个名称,称为标识符。变量的一个常见命名约定是,除了第一个单词,每个单词最初都要大写。
var myVar;
可以使用等号给变量赋值,这叫做赋值操作符(=
)。这被称为分配或初始化变量。
myVar = 10;
声明和赋值可以合并成一条语句。当一个变量被赋值时,它就被定义了。
var myVar = 10;
通过使用逗号操作符(,
),有一种在同一个语句中创建多个变量的简便方法。
var myVar = 10, myVar2 = 20, myVar3;
一旦变量被声明,就可以通过引用变量名来使用它。例如,通过将标识符传递给document.write
方法,可以将变量的值打印到 web 文档中。
document.write(myVar); // "10"
请记住,变量标识符区分大小写,因此大写和小写字母有不同的含义。JavaScript 中的标识符可以包括字母、美元符号($
)、下划线(_
)和数字,但不能以数字开头。它们也不能包含空格或特殊字符,并且不能是保留关键字。
var _myVar32; // allowed
var 32Var; // incorrect (starts with number)
var my Var; // incorrect (contains space)
var var@32; // incorrect (contains special character)
var var; // incorrect (reserved keyword)
动态打字
JavaScript 是一种动态类型语言。因此,不需要指定变量的数据类型,任何变量都可以包含任何数据类型。
var myType = "Hi"; // string type
myType = 1.5; // number type
此外,变量的值将根据需要自动转换,这取决于使用它的上下文。
// Number type evaluated as string type
console.log(myType); // "1.5"
由于这些隐式类型转换,知道变量的基础类型并不总是必要的。尽管如此,了解 JavaScript 在后台处理的数据类型还是很有用的。这六种类型如下:数字、布尔、字符串、对象、未定义和空。
数字类型
JavaScript 对于整数和浮点数只有一种类型。整数可以用十进制(基数为 10)、八进制(基数为 8)或十六进制(基数为 16)来表示。整数值上的前导零表示它是八进制的,前导 0x(或 0X)表示十六进制的。十六进制整数可以包括数字 0–9 和字母 A–F,而八进制整数只能包括数字 0–7。下面的整数文字都代表同一个数,在十进制记数法中是 10。
var dec = 10; // decimal notation
var oct = 012; // octal notation
var hex = 0xA; // hexadecimal notation
浮点数可以用十进制或指数(科学)记数法来表示。指数记数法的用法是在十进制指数后加上E
(或e
)。
var num = 1.23;
var exp = 3e2; // 3*10^2 = 300
请记住,JavaScript 中的所有数字都在后台存储为双精度浮点数。
布尔类型
bool 类型可以存储布尔值,该值只能为 true 或 false。这些值由关键字true
和false
指定。
var myBool = true;
布尔值通常与条件语句和循环语句一起使用,这将在后面的章节中讨论。
未定义的类型
JavaScript 有一个名为undefined
的值,用来表示没有值。这是声明的变量在没有初始值的情况下得到的值。
var myUndefined;
console.log(myUndefined); // "undefined"
用于存储该值的数据类型也被命名为undefined
。这可以通过使用typeof
操作符来显示,它检索一个类型的字符串表示。
console.log(typeof myUndefined); // "undefined"
请记住,未定义的变量不同于未声明的变量。任何试图访问未声明变量的行为都将导致抛出ReferenceError
异常,从而中止脚本的执行。
console.log(myUndeclared); // throws a ReferenceError
零点类型
类型和值 null 表示没有值的对象。与可能由语言级行为导致的 undefined 相反,null 值总是通过代码设置的。它通常用作指示异常或错误情况的函数返回值。
var myNull = null;
console.log(myNull); // "null"
虽然 null 是一种数据类型,但是typeof
操作符会将这种类型作为一个对象来计算。这被认为是语言规范中的一个错误。
console.log(typeof myNull); // "object"
在布尔上下文中,null 和 undefined 都被评估为false
。以下示例使用 not 运算符(!
)将这些值强制转换为布尔类型。该运算符反转布尔结果,因此被两次用于检索原始值的布尔表示。
console.log(!!null); // "false"
console.log(!!undefined); // "false"
相反,在数值上下文中,null 表现为 0,而 undefined 导致整个表达式计算为 NaN。
console.log(null * 5); // "0"
console.log(undefined * 5); // "NaN"
特殊数值
JavaScript 有三个特殊的数值:Infinity、-Infinity 和 NaN。这些值用于表示在计算过程中发生了一些异常。例如,以下计算得出这三个值。
console.log(1 / 0); // "Infinity"
console.log(-1 / 0); // "-Infinity"
console.log(0 / 0); // "NaN"
值 NaN 是非数字的缩写,表示不可表示的数值。它是数学运算失败时通常使用的返回值。例如,从-1 中取平方根得到 NaN。这个计算可以使用全局 Math 对象的 sqrt 方法来执行。
var myNaN = Math.sqrt(-1);
console.log(myNaN); // "NaN"
console.log(typeof myNaN); // "number"
尝试在数值上下文中计算非数值也会导致 NaN。
console.log("Hi" * 3); // "NaN"
NaN 有一个奇怪的特性,它与任何其他值都不相等,包括另一个 NaN 值。要确定一个值是否为 NaN,可以使用全局 is NaN 函数。
console.log(NaN == NaN); // "false"
console.log(isNaN(myNaN)); // "true"
版权属于:月萌API www.moonapi.com,转载请注明出处