变量在脚本中的第一次出现是在声明中。变量在第一次用到时就设置于内存中,便于后来在脚本中引用。使用变量之前先进行声明。可以使用 var 关键字来进行变量声明。如果在var 语句中没有初始化变量,变量自动取 JScript 值 undefined。尽管并不安全,但声明语句中忽略var 关键字是合法的 JScript 语法。
当要声明一个变量并进行初始化,但又不想指定任何特殊值,可以赋值为 JScript 值 null。如果声明了一个变量但没有对其赋值,该变量存在,其值为Jscript 值undefined。注意在 JScript 中 null 和 undefined 的主要区别是 null 的操作象数字 0,而 undefined 的操作象特殊值NaN (不是一个数字)。对null 值和undefined 值作比较总是相等的。
强制转换
运算 | 结果 |
---|---|
数值与字符串相加 | 将数值强制转换为字符串。 |
布尔值与字符串相加 | 将布尔值强制转换为字符串。 |
数值与布尔值相加 | 将布尔值强制转换为数值。 |
要想显式地将字符串转换为整数,使用 parseInt 方法。要想显式地将字符串转换为数字,使用parseFloat 方法。请注意,比较大小时字符串自动转换为相等的数字,但加法(连接)运算时保留为字符串。
数据类型
Jscript 有三种主要数据类型、两种复合数据类型和两种特殊数据类型。
主要(基本)数据类型是:
- 字符串
- 数值
- 布尔
复合(引用)数据类型是:
- 对象
- 数组
特殊数据类型是:
- Null
- Undefined
八进制和十六进制数可以为负,但不能有小数位,同时不能以科学计数法(指数)表示。
前缀为“0”同时包含数字“8”或“9”的数被解释为十进制数。
另外,JScript包含特殊值数字。它们是:
- NaN (不是数)。当对不适当的数据进行数学运算时使用,例如字符串或未定义值。
- 正无穷大。在JScript中如果一个正数太大的话使用它来表示。
- 负无穷大。在JScript中如果一个负数太大的话使用它来表示。
- 正0和负0。Jscript区分正0和负0。
如下情况将返回 undefined 值:
- 对象属性不存在,
- 声明了变量但从未赋值。 注意不能通过与 undefined 做比较来测试一个变量是否存在,虽然可以检查它的类型是否为“undefined”。//此处双引号必不可少
//
这个方法有效if (typeof(x) == "undefined")
//
作某些操作
主要是方便你调式javascript用的。你可以看到你在页面中输出的内容。
相比alert他的优点是:
-
他能看到结构话的东西,如果是alert,淡出一个对象就是[object object],但是console能看到对象的内容。
-
console不会打断你页面的操作,如果用alert弹出来内容,那么页面就死了,但是console输出内容后你页面还可以正常操作。
-
console里面的内容非常丰富,你可以在控制台输入:console,然后就可看到:
1
|
Console {memory: MemoryInfo, debug:
function
, error:
function
, info:
function
, log:
function
…}
|
它有网页的各种提示。
要检查一个对象属性是否存在,可以使用新的in 运算符:
in 运算符作用:
// 就是判断 属性是否存在于对象中,如果存在,返回值为:true // 如果不存在,则为:false // 语法:属性 in 对象 // var obj = { // name1: "jack", // age: 9, // abc: undefined // }; // 如果是name,要注意:window有name属性 // console.log("name1" in obj); // true // console.log("age" in obj);// true // console.log("age123" in obj);//false // 如果是对象中存在的成员或者是原型中的成员,此时,返回的结果就是 true // console.log("toString" in obj);// true // console.log(obj.toString());//[object Object] // console.log("abc" in obj);//true // in运算符判断数组 // 对于数组来说,索引号 就是属性 var arr = [1]; // console.log("1" in arr); // false // console.log("0" in arr); // true // console.log(0 in arr); // true // 访问数组的成员: // 可以使用 数组索引 也可以使用 字符串 console.log(arr[0]);//1 console.log(arr["0"]);//1
JScript 的运算符
JScript 具有全范围的运算符,包括算术、逻辑、位、赋值以及其他某些运算符。
计算 | 逻辑 | 位运算 | 赋值 | 杂项 | |||||
---|---|---|---|---|---|---|---|---|---|
描述 | 符号 | 描述 | 符号 | 描述 | 符号 | 描述 | 符号 | 描述 | 符号 |
负值 | - | 逻辑非 | ! | 按位取反 | ~ | 赋值 | = | 删除 | delete |
递增 | ++ | 小于 | < | 按位左移 | << | 运算赋值 | oP= | typeof 运算符 | typeof |
递减 | -- | 大于 | > | 按位右移 | >> | void | void | ||
乘法 | * | 小于等于 | <= | 无符号右移 | >>> | instanceof | instanceof | ||
除法 | / | 大于等于 | >= | 按位与 | & | new | new | ||
取模运算 | % | 等于 | == | 按位异或 | ^ | in | in | ||
加法 | + | 不等于 | != | 按位或 | | | ||||
减法 | - | 逻辑与 | && | ||||||
逻辑或 | || | ||||||||
条件(三元运算符) | ?: | ||||||||
逗号 | , | ||||||||
严格相等 | === | ||||||||
非严格相等 | !== |
== (相等)与 === (严格相等)的区别在于恒等运算符在比较前强制转换不同类型的值。例如,恒等对字符串 "1" 与数值 1 的比较结果将为 true。而严格相等不强制转换不同类型的值,因此它认为字符串 "1" 与数值 1 不相同。
基本的字符串、数值和布尔值是按值比较的。如果它们的值相同,比较结果为相等。对象(包括Array、Function、String、Number、Boolean、Error、Date以及RegExp 对象)按引用比较。即使这些类型的两个变量具有相同的值,只有在它们正好为同一对象时比较结果才为 true。
作为数组的对象
在 Jscript 中,对象和数组几乎是以相同的方式处理的。对象和数组均可以被赋予任意值,实际上数组只是一种特殊的对象。数组和对象的区别在于数组有一个“奇妙的” length 属性,而对象没有。这意味着可以给数组的一个元素赋予比其他元素更大的值。例如,myArray[100] = "hello" — 然后 length 属性将自动地被更新为 101(新长度)。同样,如果修改数组的 length 属性,将删除不再是数组部分的元素。