1. 何为 Jscript
JScript 是一种解释型的、基于对象的脚本语言。
局限性:
1) 不能使用该语言来编写独立运行的应用程序
2) 没有对读写文件的内置支持
3) 只能在某个解释器或 “ 宿主 ” 上运行,如 ASP 、 Internet 浏览器或者 Windows 脚本宿主
JScript 是一种宽松类型语言 , 这意味着我们不必显式定义变量的数据类型。多数情况下, JScript 将根据需要自动进行转换。例如:将数值添加到字符串上时,数值将被转换为字符串(详情见强制转换)。
2. 变量的声明
var count; // 变量声明
var count = 0; // 变量声明 & 初始化
name = ""; // 隐式声明变量 name ,没有使用关键字 var
1) 变量声明之后就置于内存之中,以便后来在脚本中使用
2) 若在 var 语句中变量没有初始化,变量自动取值 undefined ( 注 1)
3) 隐式声明的变量拥有全局范围可见度。当在函数中声明一个变量时,该变量不能用于全局范围,所以函数中声明变量必须使用 var 关键
4) 不能使用未经过声明的变量
5) 声明一个变量并进行初始化,但又不想指定任何特殊值,可以赋值为 null 。
var count = null;
var money = 3 * count; // money 的值为 0 。
6) 声明一个变量但没有初始化,其值为 undefined
var longth;
var area = 10 * longth; // area 的值为 NaN ,因为 longth 为 undefined 。
***********************************
* JScript 中 null 和 undefined 的主要区别 *
***************************************
--- null 是关键字;
undefined 是 Global 对象的一个属性。
--- null 是对象 ( 空对象 , 没有任何属性和方法 ) ;
undefined 是 undefined 类型的值。
document.writeln(typeof null); // 输出 object
document.writeln(typeof undefined); // 输出 undefined
--- 对象模型中,所有的对象都是 Object 或其子类的实例,但 null 对象例外:
document.writeln(null instanceof Object);// 输出 false
--- null“ 等值 (==)” 于 undefined ,但不 “ 全等值 (===)” 于 undefined :
document.writeln(null == undefined); // 输出 true
document.writeln(null === undefined); // 输出 false
--- 运算时 null 与 undefined 都可以被类型转换为 false ,但不等值于 false :
document.writeln(!null); // 输出 true
document.writeln(!undefined); // 输出 true
document.writeln(null==false); // 输出 false
document.writeln(undefined==false); // 输出 false
7) JScript 是一种区分大小写的语言,因此变量名称 blogjava 和变量名称 blogJava 是不一样的
< 注 1> : undefined
undefined 属性 Global ( 注 2) 对象的一个成员,该属性在脚本引擎初始化后可用。
如果声明了一个变量但没有初始化,该变量的值就是 undefined 。
如果没有声明变量,那么就不能将其与 undefined 进行比较,但是可以将该变量的类型与字符串 "undefined" 进行比较。
***** undefined 应用示例 *****
var declared; // 声明变量。
if (declared == undefined) // 测试变量。
document.write("declared has not been initialized.");
if (typeOf(notDeclared) == "undefined")
document.write("notDeclared has not been defined.");
< 注 2> : Global
Global 对象是一个固有对象 ( 注 3) ,把所有全局方法集中在一个对象中。
Global 不能用 new 运算符创建。它在 JScripting 引擎被初始化时创建,并立即使其方法和属性可用。
***** Global 属性 *****
1) Infinity :返回 Number.POSITIVE_INFINITY 的初始值
POSITIVE_INFINITY 属性返回比在 JScript 中能够表示的最大的数 (Number.MAX_VALUE) 更大的值。
JScript 将 POSITIVE_INFINITY 值显示为 infinity, 该值数学上的作用与正无穷相同。
与之相对, NEGATIVE_INFINITY 属性返回比 JScript 能够表示的最小负数( -Number.MAX_VALUE )更小的值。
JScript 将 NEGATIVE_INFINITY 值显示为 -infinity, 该值数学上的作用与负无穷相同。
可以看出 POSITIVE_INFINITY 和 NEGATIVE_INFINITY 都是 Number 对象的属性, Number 对象最主要的用途是将其属性集中到一个对象中,以及使数字能够通过 toString 方法转换为字符串。
Number 属性 |
Number 方法 |
MAX_VALUE |
toLocaleString |
MIN_VALUE |
|
NaN |
toString |
NEGATIVE_INFINITY |
|
POSITIVE_INFINITY |
valueOf |
constructor |
|
prototype |
2) NaN :返回特殊值 NaN ,表示表达式不是数字
相关方法: isNan( numValue )
返回一个 Boolean 值,指明提供的值 (numValue) 是否是保留值 NaN ( 不是数字 ) ,即判断是否为数字。
如果值是 NaN , 那么 isNaN 函数返回 true ,否则返回 false 。
使用这个函数的典型情况是检查 parseInt 和 parseFloat 方法的返回值。
还有一种办法,变量可以与它自身进行比较。 如果比较的结果不等,那么它就是 NaN 。 这是因为 NaN 是唯一与自身不等的值。
***** Global 方法 *****
Global 方法 |
escape |
eval |
|
isFinite |
|
isNaN |
|
parseFloat |
|
parseInt |
|
unescape |
< 注 3> : 固有对象
固有对象是作为标准 JScript 语言一部分的一种对象。所有的脚本都可以使用这种对象。 JScript 中的固有对象:
固有对象 |
|||
Array |
Boolean |
Date |
Function |
Global |
Math |
Number |
Object |
RegExp |
Regular |
Expression |
String |
3. 强制转换
在 Jscript 中,可以对不同类型的值执行运算, JScript 解释器自动将数据类型之一改变 ( 强制转换 ) 为另一种数据类型,然后执行运算。
运算 |
结果 |
数值与字符串相加 |
将数值强制转换为字符串 |
布尔值与字符串相加 |
将布尔值强制转换为字符串 |
数值与布尔值相加 |
将布尔值强制转换为数值 |
***** 强制转换示例 *****
var year = 2008; // 一个数字
var hello = "Hello "; // 一个字符串
hello = hello + year; // 将数字强制转换为字符串
document.write(hello); // 输出 Hello 2008
要想显示的将字符串转换为数字可使用方法 parseInt() 和 parseFloat() 。
Jscript 有三种主要数据类型、两种复合数据类型和两种特殊数据类型。
主要(基本)数据类型:
字符串
数值
布尔
复合(引用)数据类型:
对象
数组
特殊数据类型:
Null
Undefined
1. 字符串
1) 字符串中可以包含双引号,该双引号两边需加单引号,
字符串中可以包含单引号,该单引号两边需加双引号。
"I’m Ma Jia nan."
'"good good study, day day up", my teacher said.'
2) JScript 中没有表示单个字符的类型(如 C++ 的 char )。要表示 Jscript 中的单个字符,应创建一个只包含一个字符的字符串。包含零个字符( "" 的字符串是空(零长度)字符串
2. 数值类型
在 Jscript 中整数和浮点值没有差别; JScript 数值可以是其中任意一种( JScript 内部将所有的数值表示为浮点值)。
1) 整型
八进制和十六进制数可以为负,但不能有小数位,同时不能以科学计数法(指数)表示。
2) JScript 包含特殊值数字:
NaN( 不是数)。当对不适当的数据进行数学运算时使用,例如字符串或未定义值。
正无穷大。在JScript中如果一个正数太大的话使用它来表示。
负无穷大。在JScript中如果一个负数太大的话使用它来表示。
正0和负0。Jscript区分正0和负0。
3. boolean
任何值为 0 、 null 、未定义(undefined)或空字符串的表达式被解释为false。其他任意值的表达式解释为true
4. Null 数据类型
1) 在 Jscript 中数据类型 null 只有一个值: null 。关键字 null 不能用作函数或变量的名称。
2) 包含 null 的变量包含 “ 无值 ” 或 “ 无对象 ” 。换句话说,该变量没有保存有效的数、字符串、 boolean 、数组或对象。
3) Jscript 中, null 与 0 不相等(与在 C 和 C++ 中不同)。同时应该指出的是, Jscript 中 typeof 运算符将报告 null 值为 Object 类型,而非类型 null 。这点潜在的混淆是为了向下兼容。
5. Undefined 数据类型
如下情况使返回 undefined 值:
¨ 对象属性不存在,
¨ 声明了变量但从未赋值。
注意不能通过与 undefined 做比较来测试一个变量是否存在,但可以检查它的类型是否为 “ undefined ” 。在以下的代码范例中,假设程序员想测试是否已经声明变量 x :
//方法不起作用
if( x == undefined)
//do sth
//方法不起作用,必须检查字符串"undefined"
if(typeof(x) == undefined)
// do sth
//方法有效
if(typeof(x) == "undefined")
//do sth
考虑将 undefined 值与 null 做比较。
someObject.prop == null;
如下情况时,比较的结果为 true :
如果属性 someObject.prop 包含 null 值
如果属性 someObject.prop 不存在
要检查一个对象属性是否存在,可以使用新的 in ( 注 4) 运算符:
if("prop" in someObject)
//someObject有属性prop
< 注 4> : in 运算符
result
= propertyinobject
in 操作检查对象中是否有名为 property 的属性。
<to be continued ... ...>
本文转自BlogJavaOo缘来是你oO的博客,原文链接:JavaScript 学习笔记(1),如需转载请自行联系原博主。