3.1 语法:
1、区分大小写
2、标识符 就是指变量、函数、属性得名字 规范: 第一个字符必须是字母、下划线或美元符号 不能使用保留字作为标识符
3、注释 单行注册 “//” 多行 “/**/”
4、严格模式 在ECMAScript5 中引入了严格模式的概念,严格模式是为javaScript定义了一种不同的解析与执行模型 使用方式在脚本顶部 标注 “use strict”
5、语句 虽然JavaScript中并未强制要求用分号结尾,但建议在每一个语句后添加分号符进行结尾
3.2 关键字和 保留字
1、关键字 break、case、catch、continue、debugger*、default、delete、do、else、finally、for、function、if、in、instanceof、new、return、switch、this、throw、try
typeof、var、void、while、with
2、保留字 abstract、boolean、byte、char、class、const、debugger、double、enum、export、extends、final、float、goto、implements、import、int、interface、
long、native、package、private、protected、public、short、static、super、synchronized、throws、transient、volation
3.3 变量
var message ; 声明一个message的变量,该变量可以用来保存任何值;(未初始化的变量会保存一个特殊值“undefined”)
var temp="hello" ; 声明了一个变量temp 并且赋值了“hello”
3.4 数据类型
ECMAScript中有5种简单数据类型: Undefined、Null、Boolean、Number和string,以及一种复杂类型——Object;
Object本质是由一组无序的名值组成,不支持任何创建自定义类型的机制、所有值最终都是上述类型之一!
typeof操作符 返回对象的类型 使用方法 ①: typeof(任意对象) 括号亦可以不加 说明 typeof(null) 会返回 object ,
一、Undefined类型 只有一个值“undefined” 在声明变量后未初始化的值就是undefined,对未声明或未初始化的值 进行typeof操作都是返回 undefined
二、Null类型 它同样只有一个值的类型 唯一的取值是“null” null表示一个空指针对象 因此 undefined == null 为true 但是 undefined === null 会返回false
三、Boolean类型,取值为“true ” 或者 “false” ; 在ECMAScript中所有的数据类型都可以通过Boolean(data) 函数转化为boolean值,undefined转化后为false 转化后为true说明 :
string 类型 非空的值 ,Number非零的值 ,object 非null值
四、Number类型,在ECMAScript中采用IEEE754格式来表示整数与浮点数值(双精度数值) 8进制的数值表示:示例 “07” 第一位必须是零然后是八进制数列(0~7);
当后面的数值超过八进制数列那么将会被当作十进制处理 ; 十六进制:必须以0x开头后面为(0~9、a-f)结尾; 八进制和十六进制数值在进行计算时统一转化为十进制数进行计算;
a、浮点数表示一个数值里面必须包含一个小数点 例如“1.1” ; 浮点数的计算会存在精度问题 0.1 +0.2 != 0.3而是0.30000000000000004
b、数值范围: 最小值 Number.MIN_VALUE (5e-324) ,最大值 Number.MAX_VALUE(1.7976931348623157e+308) ,超过这个值时会转化特殊的Infinity值,负数则为负无穷
c、NaN:非数值 任何数除以0 都会返回NaN , 可以通过isNaN函数来判断是否为“非数值” 示例 : isNaN(NaN) ==true isNaN(10) ==false isNaN('10')==false
isNaN('hello')==true isNaN(true)==false 说明参数为string类型时,若string类型能转化为Number类型 那么返回false,否则为true,boolean类型可以转化为0和1因此也
会返回false
d、数值转化函数
1、Number() 转化规则:
参数为boolean类型时,true和false的值转化后分别为1和0 ; 参数为 Number类型、只是简单的传入和返回
参数为null值 返回 0 参数为undefined 返回NaN
参数为string类型时 ①字符串只包含数字,则转化为十进制数据 并且忽略前置0 示例 ‘000001’ 转化后为 1 ‘000000’ = 转化后为0
②字符串只包含浮点数,则转化为浮点数 忽略前置0 示例 ‘1.1’ 转化后 1.1
③字符串为十六进数据 则转化同等的十六进制数据
④字符串为空 转化为0
⑤字符串包含除上述格式之外的字符 转化为 NaN
参数为对象时 则先调用对象的ValueOf()方法,然后根据上述规则转化,若转化的结果为NaN ,则调用对象的toString()方法;
再次按照上述规则转化
2、parseInt() : 转化规则 采用依次解析的方式 并且忽略字符串前面的空格直到找到第一个非空字符,如果第一个字符不是数字或者负号则返回NaN,
若第一个解析为数值,则继续解析后续字符,直到解析完成; 在解析后续遇到非数值字符,那么会忽略后续字符 返回之前解析的数值
示例: parseInt('10blue') = 10 ; parseInt('2.2') = 2 忽略掉浮点数中间的小数点及后续字符
为了避免歧义:可以在参数后面传入 进制 标识按指定进制解析 示例: parseInt('oxff',16) 指定16进制的方式解析
3、parseFloat() 与parseInt唯一的区别是在解析到第一个小数点时会继续解析,直到遇上非数值字符 示例:parseFloat(’2.3.5‘)=2.3 parseFloat(2.2test)=2.2
五、String类型 :用于表示由零个或多个Unicode字符组成的字符序列,字符串可以使用单引号或者双引号表示
1、字符字面量 例如“abcd” 转义序列 ' ' 换行 、' '制表符 '' 空格 ' '回车 转义字符在字符串中的任何位置都会被作为一个字符解析
2、字符串特点 在ECMAScript中 字符串是不可变的,也就是说创建一个字符串后它的值无法改变;
3、转化为字符串 除了 undefined和null 以外 所有的类型 都可以通过toString()方法将其转化为字符串 ,Number类型可以传递进制参数 返回指定进制数值的 字符串形式
六、Object类型: ECMAScript中的对象其实是一组数据与功能的集合 ,对象可以通过new操作符跟要创建的类型名称来创建 !示例: var o=new Object();
Object类型所有的任何属性和方法也同样存在于更具体的对象中,简单理解 (类似于java中的java.lang.object对象)
Object实例都拥有以下属性和方法
Constructor :保存着用于创建当前对象的函数
hasOwnProperty(propertyName):检测实例对象中是否包含指定的属性
isPrototypeOf(object) :检测实例对象是否是另外一个对象的原型
propertyIsEnumerrable:检测指定的属性 是否能使用for-in语句进行遍历
toString() 返回对象的字符串表示 valueOf() 通常于toString()方法返回一致
3.5操作符
一、一元操作符 : 只能操作一个值的操作符被叫做一元操作符 递增++ 、递减-- ①在操作数前面 先递增或递减后 再使用操作数
②在操作数后面,先使用操作数值,然 后再将操作数递增或递减
二、位操作符 按位非not 操作符 '~'表示 执行结果就是返回值数值的反码
按位与 And 操作符 '&'表示 执行结果 是将两个数值的每一位对齐按照指定规则执行and操作
当两个数值的指定位的值都为1时返回1 否则返回0
按位或(or) 操作符 '|'表示 执行结果是两个操作数的每一位对齐,当两个数值的指定位的值 只要有一个为1 那么返回1 否则返回0
按位异或(xor) 操作符 '^' 表示 执行结果是两个操作数在对应位上 只有一个值为1 时返回1 否则返回0 (两个1返回0,两个0 返回0)
根据编码规则:整数类型其左边首位为符号位 正数为0 负数为1 (这里用字节表示)
负数的二进制表示计算方法: 将其绝对值 减一然后再 对二进制位进行逐位取反
以-1 为例: 1的二进制为"0000 0001" 减一后为“0000 0000 ” 取反后的二进制值为 "1111 1111"
以-127 为例: 127的二进制为"0111 1111" 减一后为“0111 1110 ” 取反后的二进制值为 "1000 0001"
左移 操作符 '<<' 表示将数值转化为二进制之后 把所有数据位像左边移动指定位数 ,空余位用0补齐
示例:整数 '2 >>3 ' 转化为二进制后为“0000 0010” ——》结果为 “0000 1000” 结果等于8
有符号的右移 操作符'>>' 表示将数值转化为二进制之后 把所有数据位像右边移动指定位数 与左移 相反 但是保留左边符号位
无符号的右移 操作符'>>>' 表示将数值转化为二进制之后 把所有数据位像右边移动指定位数
示例 将-1 进行无符号右移2位 "-1 >>> 2" -1 的二进制为 “ 1111 1111 1111 1111 ,1111 1111 1111 1111 ”
右移2位后 “0011 1111 1111 1111 ,1111 1111 1111 1111 ” 转化为十进制 得 到“1073741823”
布尔操作符 逻辑非 用感叹号表示"!" 逻辑与 “&&” 逻辑 或 “||”
乘法操作 ① 如果操作数都为正数或都为负数 那么结果为正数 ,如果只有一个有符号 那么结果为负数 ,
如结果超出范围那么返回Infinity或者-Infinity
② 如果一个操作数为NaN 结果为NaN
全等和不全等 全等符号 “===” 当被比较的两个数不经过转换就相等时 返回true 示例:“3” ===3 返回false 原因:第一个数为string类型 第二个数为Number类型
3.7 函数
一、理解参数:函数的所有参数通过arguments对象来维护 ,参数命名只是方便语义上的理解; arguments对象类似array(但不是array实例),
可以通过length属性来确定传入了多少个参数;也可以通过arguments[index]来访问具体参数的值,如果在函数内部修改了
arguments对象的值,若存在对应传入的参数,那么对应参数的值会同步修改
二、没有重载:若存在同名函数,那么调用时会执行最后定义的函数