javascript
介绍
发展历史
作用
组成
书写位置
变量
变量声明
var 变量名;
变量赋值
变量名 = 值;
变量调用
变量名
变量命名
1】字母、数字、下划线、$组成,数字不开头
2】不能使用关键字、保留字,例如:for、name
3】严格区分大小写
4】见名知意
5】驼峰命名,第1个单词首字母小写,其他的单词首字母大写
变量使用扩展
1】一次性声明多个变量
2】变量只声明未赋值,它的值为undefined
交换两个变量的值
声明第三个变量, 值为空,然后2给1,3给2,1给3
数据类型
数据类型分类
简单数据类型
数字型(整数、小数)
进制(表示数字)【了解】
八进制(用0开头)
十进制【默认】
十六进制(用0x开头)
最大值和最小值【了解】
特殊值:NaN(not a number,不是1个数字)【掌握】console.log('三遍老师' - 20); 注意
字符串型(用引号引起来的字符)
用单引号或双引号,引起来的字符,例如:'123'、"true"
单引号和双引号嵌套
口诀:【外单内双,外双内单】
字符串中使用转义符
\n,换行
\t,tab键缩进
字符串长度【字符的个数】
字符串.length
字符串的拼接
拼接运算符,+【字符相连,数值相加】
如果+号两边有任意一边是字符串,则进行字符相连操作,
如果+号两边都是数字,则进行相加操作。
注意:变量和字符串拼接时,不能把变量用引号引起来。【引引加加】
布尔型(真或者假,true或者false)
未定义(undefined)
null(空)
复杂数据类型
对象
变量的数据类型检测(变量中的值是什么类型,变量就是什么类型)
typeof 变量名
数据类型转换
把其他类型转换为字符串
转换的方式
方式1:待转变量名.toString()
方式2:String(待转变量名)
【隐式转换】方式3:待转变量名 + '';
具体的操作
把其他类型转换为数字型
转换的方式
方式1,转换为整数:parseInt(待转变量名)
方式2,转换为小数:parseFloat(待转变量名)
方式3,转为数字型:Number(待转变量名)
【隐式转换】方式4:待转变量 - 0 或者 待转变量 * 1
把其他类型转换为布尔型
转换方式
Boolean(待转变量名)
运算符
算数运算符
+、-、*、/
%取余(取模)
注意:小数有精度问题,不能直接判断两个小数是否相等
自增和自减运算符【一元运算符】
前置自增
后置自增
【前置和后置的区别】
1-单独使用前置或者后置自增时,没区别
2-自增表达式还参与了其他运算【口诀】
// 前置自增(变量先自加1,然后返回自增表达式的结果)
// 后置自增(先返回变量的值,然后变量再自加1)
比较运算符【比较运算表达式的结果为布尔值】
>、>=、<、<=
相等,==
不等,!=
全等,===
不全等,!==
逻辑运算符
逻辑与,&&【两边都为真,则结果为真,即一假为假】
逻辑或,||【一边为真,则结果为真,即一真为真】
逻辑非,!(取反)
【逻辑运算中断,如果表达式1能够决定最终的结果,则表达式2不会执行,即发生中断】
逻辑与中断的情况【一假为假】:表达式1的结果为假
逻辑或中断的情况【一真为真】:表达式1的结果为真
赋值运算符
=
+=
-=、*=、/=、%=
三元运算符:? :
运算符优先级
流程控制语句
顺序结构语句【从上往下依次执行,默认】
分支结构语句(只会执行1个分支)
if语句
单分支,if(){}
双分支,if(){}else{}
多分支
switch语句
if和switch语句的区别(区分开什么时候用if,什么时候用switch)
循环结构语句
for循环语句
双重for循环
while循环语句
do while循环语句
什么时候用for循环,什么时候用while循环
数组
什么是数组
一组数据的集合,每个数据的类型可以是任意的。
创建数组
方式1:var arr = new Array();
方式2:var arr = [10, 'abc', true];
数组元素
数组中的数据叫做数组元素,通常简称“元素”
数组元素的索引
数据都被编了一个号,这个号就叫索引或下标。号从0开始编的。
数组的长度(元素的个数)
数组名.length
遍历数组(使用for循环)
把数据中的元素从头到尾访问一遍。
正序遍历
倒序遍历
数组冒泡排序【笔试必考】
函数
作用:重复使用代码。
完成某项功能的代码体。
声明函数
命名函数(有名字的函数)
function 函数名(){
// 函数体
}
函数表达式(匿名函数)
var fn = function(){};
把一个没有名字的函数,赋值给了一个变量。
fn();
调用
函数名();
小技巧
1)通常1个函数只干1件事
2)函数中使用true或者false来表示状态
3)用1个变量保存这个状态,先假设1个状态,再判断条件,如果满足则改变状态,最后返回这个状态变量。
参数
形参,形式上的等待被赋值的变量(不用使用var声明的变量)
实参,实际参与代码执行的数据,赋值给形参变量。
形参和实参个数不匹配的情况
形参个数少于实参【多出的实参数据没有人接收】
形参个数多于实参【多出的形参没有被赋值,那么它的值为undefined】
调用函数时,实参的个数不固定情况
函数内有1个arguments对象【伪数组】,保存了所有的实参数据。
可以像操作数组一样,去操作这个对象。
返回值(结果)
function 函数名(){
// 函数体
return 结果值;
}
注意事项
1)return能够终止函数。return后面的代码不会被执行。
2)return只能返回1个值,如果要返回多个值,返回一个数组。
3)如果没有return或者return后面没有值,默认返回undefined
作用域
全局作用域【script标签之间或者外部的js文件】
局部作用域【函数内部】
全局变量和局部变量
全局变量(再全局作用域声明的变量),可以在全局作用域或者局部作用域访问。
局部变量(函数内声明的变量),只能在局部作用域访问【只能在函数内部使用】
作用域链
访问1个变量时,先在当前作用域查找这个变量,如果找到直接使用,如果找不到就向上一级作用域去查找,这个查找过程咱们可以称之为“作用域链”
预解析
js代码在执行时,会经过两个阶段(1)把代码排列好顺序【预解析】2)从上往下依次执行)
预解析:把变量声明和函数声明提升到当前作用域的前面。
注意写代码:
1)变量要先声明,再使用。
2)命名函数可以先声明再调用,也可以先调用再声明
3)函数表达式,必须先声明,再调用
对象
什么是对象?由属性和方法组成。
创建对象
自定义对象
方式1:字面量 var obj = {};
方式2:var obj = new Object();
方式3:var obj = new 构造函数名();
使用对象
调用属性(获取属性值)
方式1:对象名.属性名
方式2:对象名['属性名']
当属性名不是具体值,时变量时,用这种调用方式
调用方法:对象名.方法名();
内置对象
Math数学对象
最大值和最小值
绝对值
随机数
Date日期时间对象
Array数组对象
检测是不是数组
添加元素
在末尾添加元素
在头部添加元素
删除元素
删除最后一个元素
删除第一个元素
翻转数组
数组排序 sort
获取元素的索引值, indexOf()
把数组转为字符串,join()
String对象
为什么字符串变量可以操作属性和方法?【基本包装类型】
为什么要尽量避免大量字符的拼接操作?【字符串在内存中是不可变的】
根据字符返回位置,字符串.indexOf('字符');
根据位置返回字符,字符串.charAt(index)
可以像遍历数组一样去遍历字符串,字符串[index]
使用for in语句遍历对象(从头到尾访问一遍对象的属性)
|
|