第3章 基本概念
2018-03-23 10:08:24 0 举报
AI智能生成
js高程第三章
作者其他创作
大纲/内容
3.4 数据类型
检测数据类型
typeof--是操作符,不是函数
函数返回"function"; 对象或null返回"object"
具体数据类型(5+1)
简单数据类型
Undefined
唯一值undefined
声明但未初始化的变量值就是undefined
尚未声明的变量只能执行一项操作-typeof
Null
唯一值null-空对象指针
一般用于初始化将要保存对象的变量
Boolean
两个值:true和false
ES中的所有值都有与这两个值等价的值 ("",0,NaN,null,undefined-->false;其它-->true)
流控制语句(如if)会自动执行相应的Boolean转换
Number
整数格式
十进制、八进制(严格模式无效,报错)、十六进制
浮点数值
1.可以没有整数
2.ES会将浮点数值转换为整数(10.0-->10)
3.极大极小数用科学计数法表示
4.浮点数值计算会产生误差(0.1+0.2 != 0.3)
数值范围
Number.MIN_VALUE~Number.MAX_VALUE
超出范围的转换成Infinity或-Infinity,用isFinite()判断是否有穷
NaN
特点:
1.任何涉及NaN的操作都返回NaN
2.NaN与任何值都不等 NaN !== NaN
isNaN()
接收到一个值后,尝试转换成数值在进行判断
数制转换
任何类型-->数值
Number()-与一元加操作符相同
null-->0;undefined-->NaN;对象-->对象.valueOf()-->对象.toString()
字符串-->数值
parseInt()
能够识别各种整数格式,ES5中不识别八进制
可以传两个参数
第二个参数表示进制
parseFloat()
没有第二个参数,直解析十进制,十六进制始终被转换成0
String
1.单双引号匹配使用
2.length属性获取长度
toString()
null和undefined没有这个方法
String()
技巧:某值转换成字符串,可以使用“+”把它和一个空字符串("")相加
复杂数据类型
Object
创建实例
var o = new Object()或var o = new Object
Object是所有它的实例的基础<==>Object类型所具有的任何属性和方法同样存在于更具体的对象中
属性和方法
(所有对象都有的)
constructor
保存用于创建当前对象的函数,如Object()
hasOwnProperty(propertyName)
用于检查给定的属性在当前对象实例中(而不是实例的原型中)是否存在
isPrototypeOf(object)
propertyIsEnumerable(propertyName)
toLocalString()
toString()
valueOf()
3.5 操作符
一元操作符
++和--
前置型
变量的值都是在语句被求值以前改变的
后置型
变量的值都是在语句被求值以后改变的
+和-
+(非数值) <==> Number(非数值)
位操作符
ES中所有数值以64位存储,但位操作符按32位进行操作,第32位是符号位
负数使用的格式是二进制补码
1)求该负数的绝对值的二进制码
2)求二进制反码,0和1互换
3)得到的二进制反码加1
按位非(~)、按位与(&)、按位或(|)、按位异或(^)、左移(<<)、有符号的右移(>>)、无符号右移(>>>)
布尔操作符
!
先将操作数转换为布尔值,再求反
!!(操作数) <==>Boolean(操作数)
&&
表达式的结果为第一个不为真的项
||
表达式的结果为第一个不为假的项
乘性操作符* / %
如果操作数不是数值,在后台调用Number()
Infinity*NaN=NaN
Infinity/Infinity=NaN, 0/0=NaN, 1/0=Infinity
Infinity%1212=NaN, 123%0=NaN, Infinity%Infinity=NaN
加性操作符+ -
也会调用Number()
Infinity+(-Infinity)=NaN, +0+(-0)=+0
Infinity-Infinity=NaN, (-Infinity)-(-Infinity)=NaN, +0-(-0)=-0, -0-(-0)=+0
关系操作符<、>、<=、>=
任何数与NaN进行比较都是false
相等操作符==和===
==先转换再比较
===只比较不转换
null==undefined==>true
null===undefined==>false
条件操作符
variable = boolean_expression ? true_value : false_value;
赋值操作符
=和*=等复合赋值运算符
逗号运算符
总会返回表达式中最后一项 var num=(5,1,3,0,2); //结果2
3.6 语句
1.if语句
2.do-while语句
3.while语句
4.for语句(循环内部定义的变量也可以在外部访问到)
5.for-in语句(用来枚举对象的属性,没有顺序,使用前先确认该对象的值不是null或undefined)
6.label语句(通常配合for循环嵌套使用,从而返回代码中特定的位置)
7.break和continue语句
break:跳出整个循环,i++不执行
continue:跳出本次循环
8.with语句(将代码作用于设置到一个特定的对象中 !!!不建议使用 !!!严格模式下不允许使用)
9.switch语句(比较值时使用全等)
3.1 语法
区分大小写
标示符(变量名、函数名或函数参数、属性名)可以是字母、下划线、美元符或数字
多行注释每行以*开头,提高可读性
严格模式 “use strict” 可以在整个脚本顶部设置,也可以在指定函数内部开头
语句--(最佳实践)1.分号结尾 2.即使只有一条语句也要使用代码块{}
3.2 关键字和保留字
关键字
保留字
3.3 变量
ECMAScript的变量是松散类型的,可以用来保存任何类型的数据
局部变量
使用var操作符定义的变量将成为定义该变量的作用域中的局部变量,函数中使用var定义的变量在函数退出后就会被销毁
严格模式
变量名不能为eval或arguments
3.7 函数
概述
不必指定是否返回值
可以通过return后跟要返回的值来实现返回值
return执行完之后立即退出函数,return之后的代码不执行
return可以不带任何返回值,用于停止函数又不需要返回值的情况
参数
1.函数不介意参数个数和参数数据类型
2.ES中的参数在内部是用一个数组表示的
3.函数体内通过arguments对象(类数组)访问这个参数数组
4.arguments对象可以和命名参数一起使用
!!!arguments的值永远与对应的命名参数的值保持同步,但是内存空间独立
5.没有传递值的命名参数自动赋予undefined
6.严格模式下 改变arguments的值不会影响命名参数的值
重写arguments会报错
没有重载
同名函数后定义的会覆盖先定义的
0 条评论
下一页
为你推荐
查看更多