基础
Js包括:ES(标准) ,DOM(文档对象模型),BOM(浏览器对象模型)
Js特点:解释型语言(不用编译);类似于C和Java的语法结构;动态语言;基于原型的面向对象。
标识符:所有可以自主命名的(变量名,函数名,属性名)
规则
1.标识符中可以含有字母,数字,下划线,$
2.标识符不能以数字开头
3.标识符不能是ES中的关键字
4.命名规范:驼峰命名法
js底层保存标识符实际上采用的是Unicode编码,所以所有UTF-8中含有的字符都可以作为标识符,但不能用中文。
数据类型
六种数据类型
String 字符串
Number 数值
Boolean 布尔值
Null 空值
Undefined 未定义(声明但没赋值)
Object 对象
补充:
1.Object为引用数据类型,其余为基本数据类型。
2.用 typeof 可以检查数据类型。
3.最大的数字:Number.MAX_VALUE
最小的正数: Number.MIN_VALUE
4.Null 类型用 typeof 检查结果为 Object
强制类型转换
将其他类型强制转换为String
方式1:
调用被强制转换类型的toString()方法,该方法只是将转换的结果返回,本身并不变化
例:b = b.toString();
null类型和 undefined 类型无 toString 方法,不能转为string型
方式2:
调用string函数
例:b = String(b);
null类型和 undefined 类型都可以转换
将其他类型转换为 Number
1.纯数字字符串,直接转换为数字
2.含有非数值字符,则转换为NaN
3.空串转换为0,null=0
4.布尔类型,true=1,false=0
5.undefined = NaN
方式1:使用Number函数
方式2:(专门用来将字符串转为数值):只转换字符串中有效数字部分
parseInt() 把一个字符串转换为一个整数
parseFloat() 把一个字符串转换为一个浮点数
可以用parseInt()的第二个参数来表示进制
如果非数字类型调用parseInt(),则先将其转换为字符串,再转为数值
将其他类型转换为布尔
调用Boolean函数
1.数字转布尔,0和NaN = false
2.空串为false
3. null = false
4.undefined = false
操作符
一元运算符
+ 正号
- 负号
++ 自增
-- 自减
逻辑运算符
! 非
&& 与
|| 或
非布尔值进行运算,会先转换为布尔值然后进行运算。
关系运算符
>
<
>=
<=
任何值和NaN比较都是false
两个字符串比较不用转换为数值,用Unicode编码进行比较
相等运算符
== 返回true或false;如果值的类型不同,则自动转化为相同的类型
undefined == null true
NaN和任何值都不相等,包括其本身
isNaN()函数判断对象是否为NaN
!= 不相等
=== 全等 不会做类型转换
!== 不全等 不会做类型转换
条件运算符
条件表达式? 语句1:语句2;
例:r = 3>5?1:0;
如果3大于5,则返回1;如果3<5,则返回0;
结果为:r = 0
对象
对象分类:
1.内建对象
由ES标准定义的对象,在任何的ES实现中都可以用
比如:Math String Number Boolean Function Object...
2.宿主对象
由JS运行环境提供的对象,主要指由浏览器提供的对象
比如:BOM DOM
3.自定义对象
由开发人员自己创建的对象
数组
Date对象 表示一个时间
格式:周 月/日/年 时:分:秒
使用时需要先创建一个Date对象,然后调用方法
方法:
getDate() 获取当前对象时间的日期
getDay() 获取当前对象时间是周几 0~6表示周日~周六
getMonth() 获取当前对象时间是几月 0~11 表示 1月~12月
getFullYear() 获取当前对象时间的年份
getTime() 获取当前日期对象的时间戳
补充:
时间戳指从格林威治标准时间的 1970年1月1日 0时0分0秒 到当前日期所花费的毫秒数(我们通常说的时间为北京时间,与格林威治标准时间有8小时时差)
获取当前时间 time = Date.now();
Math 数学公式 工具类,不需要创建对象,可以直接用
Math.abs() 绝对值
Math.ceil() 对数进行上舍入(向上取整)
Math.floor() 对数进行下舍入(向下取整)
Math.round() 对数进行四舍五入
Math.random() 生成0~1之间的随机数,不包括0,1
生成x~y之间的随机数: Math.round(Math.random()*(x-y) + x)
Math.max() 获取多个数中的最大值;
Math.min() 获取多个数中的最小值
Math.pow(x,y) 返回x的y次方
Math.sqrt() 平方根
String(字符串)
字符串在底层义字符数组的形式存储
方法:
charAt() 返回在指定位置的字符
charCodeAt() 返回在指定位置的字符的UniCode编码
fromCharCode() 根据字符编码找它代表的字符
例: String.fromCharCode(108)
concat() 连接字符串
indexOf() 检索字符串中是否含有指定内容
不存在返回-1,有多个则返回第一个的位置。第二个参数可以指定开始查找的位置
lastIndexOf() 检索字符串中是否含有指定内容,从后面往前查询
slice() substring() 截取字符串,与数组用法一样
substring() 不能接受负值;会自动从小到大截取
split() 可以将一个字符串拆分为数组,参数为分隔符
toUpperCase() 将字符串转换为大写
toLowerCase() 将字符串转换为小写
正则表达式
计算机根据正则表达式来检查一个字符串是否符合规则,将字符串中符合规则的内容提取出来。
创建正则表达式的对象
var 变量 = new RegExp("正则表达式","匹配模式");
匹配模式:i 忽略大小写;g 全局匹配模式
使用字面量来创建正则表达式
var 变量 = /正则表达式/匹配模式
检测是否为正则表达式
正则表达式对象.test(被检测的字符串)
方法:
split() 根据字母拆分字符串,默认全局
search() 搜索字符串中是否含有指定内容,只会查找第一个
match() 根据正则表达式,从一个字符串中将符合条件的内容提取出来,默认情况下,只会找到第一个符合要求的内容,给正则表达式设置全局匹配模式,全局查找
replace() 将字符串中指定的内容替换为新的内容;第一个参数为被替换的内容,第二个参数为替换的内容