JavaScript实现
一个完整的JavaScript实现应该由下列三个不同的部分组成:
核心(ECMAScript)
文档对象模型(DOM)
浏览器对象模型(BOM)
基本概念
语法
区分大小写
变量名 test 和变量名 Test 分别表示两个不同的变量,而函数名不能使用 typeof,因为它是一个关键字,但 typeOf 则完全可以是一个有效的函数名。
标识符
所谓标识符,就是指变量、函数、属性的名字,或者函数的参数。
标识符可以是按照下列格式规则组合起来的一或多个字符:
第一个字符必须是一个字母、下划线(_)或一个美元符号($)
其他字符可以是字母、下划线、美元符号或数字
不能把关键字、保留字、true、false 和 null 用作标识符
关键字和保留字
以下就是 ECMAScript的全部关键字(具有特定用途):
break do instanceof typeof case else new var catch finally return void continue for switch while debugger* function this with default if throw delete in try
第 5 版在非严格模式全部保留字(不能用作标识符):
class enum extends super const export import
变量
定义变量时要使用 var 操作符(注意 var 是一个关键字),后跟变量名(即一个标识符),如:var message; 如果在函数中使用 var 定义一个变量,那么这个变量在函数退出后就会被销毁。
可以使用一条语句定义多个变量,把每个变量(初始化或不初始化均可)用逗号
分隔开即可。
数据类型
基本数据类型:Undefined、Null、Boolean、Number和 String。
还有 1种复杂数据类型——Object(本质上是由一组无序的名值对组成的)。
typeof操作符
对一个值使用 typeof (检测给定变量的数据类型
)操作符可能返回下列某个字符串:
- undefined”——如果这个值未定义;
- “boolean”——如果这个值是布尔值;
- “string”——如果这个值是字符串;
- “number”——如果这个值是数值;
- “object”——如果这个值是对象或 null;
- “function”——如果这个值是函数。
Undefined类型
在使用 var 声明变量但未对其加以初始化时,这个变量的值就是 undefined。
Null类型
从逻辑角度来看,null 值表示一个空对象指针,而这也正是使用 typeof 操作符检测 null 值时会返回”object”的原因。如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为 null 而不是其他值。
Boolean类型
该类型只有两个字面值:true 和 false。这两个值与数字值不是一回事,因此 true 不一定等于 1,而 false 也不一定等于 0。
需要注意的是,Boolean 类型的字面值 true 和 false 是区分大小写的。也就是说,True 和 False(以及其他的混合大小写形式)都不是 Boolean 值,只是标识符
虽然 Boolean 类型的字面值只有两个,但 ECMAScript 中所有类型的值都有与这两个 Boolean 值等价的值。要将一个值转换为其对应的 Boolean 值,可以调用转型函数 Boolean()。
Number类型
浮点数值(该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字)
数值范围(要想确定一个数值是不是有穷的,可以使用 isFinite()函数。这个函数在参数位于最小与最大数值之间时会返回 true)
NaN(即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了))
数值转换(有 3 个函数可以把非数值转换为数值:Number()、parseInt()和 parseFloat()。第一个函数,即转型函数 Number()可以用于任何数据类型,而另两个函数则专门用于把字符串转换成数值)
toString与String的区别
- toString()方法;数值、字符串、对象、布尔;都有toString方法;这个方法唯一能做的就是返回相应的字符串;其中null和undefined没有toString()方法。
- String()属于强制转换, null转换的结果为null;undefined转换的结果为undefined;其余的如果有toString()方法,即调用该方法,返回相应的结果;