一、数据类型简介
①JavaScript拥有动态类型,同时也意味着相同的变量可作用不同的变量类型;
例: var x=9; //x为数字
var x="still"; //x为字符串
②JS把数据类型分为两类:
简单数据类型(Number,String,Boolean,Undefined,Null)
复杂数据类型(object)
二、简单数据类型
简单数据类型 说明 默认值
Number 数字型,包含整型值和浮点型值,如21、0.21 0
Boolean 布尔值类型,如true、false,等价于1和0 false
String 字符串类型,如“张三” “”
Undefined var a; 声明了变量却没赋值,此时a=Undefined Undefined
Null var a=null;声明了变量a为控制 null
①Number
1.八进制前加0,十六进制前加0x;
2.三个特殊值: Infinity 无穷大,大于任何数值
-Infinity 无穷小,小于任何数值
NaN , Not a number 代表一个非数值
3.isNaN() 判断一个变量是否为非数字
4.typeof 判断变量的类型
②string
1.字符串类型可以用双引号也可以用单引号
2.js可以用单引号嵌套双翼好,或者用双引号嵌套单引号
例: var strMsg='我是"地道的"程序员';
var strMsg2="我是'地道的'程序员";
3.转义字符
转义符 解释说明
\n 换行符
\\ 斜杠\
\' ' 单引号
\" " 双引号
\t 缩进
\b 空格
4.字符串长度和字符串拼接
求字符串长度用length方法 例: var str='123456' alert(str.length);
字符串拼接用’+‘ 例: alert('沙漠'+'骆驼');
5.简单的对话框
prompt 输入框
三、数据类型转换
①转换为字符串
方式:toString() 例:var num=11;alert(num.toString());
String()强制转换 例:var num=11;alert(String(num));
加号拼接字符串 例:var num=11;alert(num+"我是字符串");
②转换为数字型
方式:parseInt(string) 将string类型转换成整数数值型
parseFloat(string) 将string类型转换成浮点数数值型
Number()强制转换 将string类型转换成数值型
js隐式转换(- * 、) 利用算术运算隐式转换为数值型
③转换为布尔型
方式:Boolean()函数
·代表空、否定的之会转换为false
·其余值都换转换为true
四、解释型语言和编译型语言
两者之间的区别:
①编译型语言是将所有的代码编译完成后再去执行
②解释型语言是每一句语句一编译称然后执行
五、标识符、关键字、保留字
1.标识符:就是开发人员为变量、属性、函数、参数取的名字
规则:标识符不能是关键字
2.关键字:是指JS本身已经使用了的字,不能再用它们充当变量名、方法名
3.保留字:目前还不是关键字,但以后可能会成为关键字
六、表达式、算术运算符
1.表达式:由数字、运算符、变量等组成的式子
原则:计算表达式右边的值,把值赋给左边
2.算术运算符
符号 作用 用法
= 赋值 把右边的值给左边
== 判断 判断两边的值是否相等
=== 全等 判断两边的值和数据类型是否完全相等
3.逻辑运算符
符号 作用
&& 与
|| 或
! 非
4.短路运算
&&与运算中如果第一个表达式值为0则直接输出第一个表达式的值
如果第一个表达式值为1则输出第二个表达式的值
||或运算中如果第一个表达式的值为1,则直接输出第一个表达式的值
如果第一个表达式的值为0,则输出第二个表达式的值
5.赋值运算符
=
+= -=
*+ /= %=
6.算术运算符优先级
1 小括号
2 一元运算符 ++ -- !
3 算术运算符 先* % /再+ -
4 关系运算符 > < <= >=
5 相等运算符 == === != !==
6 逻辑运算符 先&& 再||
7 赋值运算符 =
8 逗号运算符 ,
七、流程控制分支结构
1.流程控制主要有三种结构分别是顺序结构、分支结构、循环结构
2.分支结构
·if语句
·switch语句
三元表达式: 条件 ? 结果1 : 结果2;
3.循环结构
for循环
while循环
do while循环
八、数组
1.数组的创建
①利用new新建数组
var 数组名 = new Array();
var arr = new Array(); //创建一个新的空数组
注意Array()中A要大写
②利用数组字面量创建数组
var 数组名 = []; //创建空的数组
var 数组名 = ['a','b','c','d']; //创建带初始值的数组
③数组的长度是数组元素的个数。
④新增数组元素
方法一:修改素组的长度length
方法二:修改数组的索引
⑤冒泡排序
外层循环是趟数 length-1
内层循环是交换次数 length-i-1
九、函数
1.函数的声明和调用
函数关键字声明 ①声明:function 函数名(){
函数体
}
调用:函数名()
函数表达式 ②声明:var fun = function(){
函数体
}
调用:函数名()
2.函数的封装:把一个或多个功能通过函数的方式封装起来
3.函数实参和形参个数匹配
参数个数 说明
实参个数等于形参个数 输出正确的结果
实参个数多于形参个数 只取到形参的个数
实参个数小于形参个数 多的形参定义为undefined
4.函数返回值return注意项
①return 终止函数
②return 只能返回一个值
③return 可以用数组返回多个值
④没有return 返回的是undefined类型
5.arguments的使用
arguments存储了传递过来的所有实参
特性 是一种伪数组
1.具有length属性
2.按索引的方式存储
3.没有真正数组的一些方法pop() push
十、JavaScript作用域
1.JavaScript作用域:就是代码名字(变量)在某个范围内起作用和效果,目的是提高程序的可靠性和减少命名冲突
①js作用域分为:全局作用域 局部作用域
②全局作用域:整个script标签或者是整个单独的js文件
③局部作用域(函数作用域):在函数内部。
2.变量作用域
①全局变量:在全局作用域下的变量 在函数内部没有声明直接赋值的变量
②局部变量:在局部作用域下的变量 函数的形参也可以看做局部变量
3.从变量的执行效率来看全局变量和局部变量
①全局变量只有浏览器关闭的时候才会销毁,比较占内存
②局部变量当我们的程序执行完毕后就会销毁,比较节约内存
4.作用域链:内部函数访问外部函数的变量,采取的是链式查找的方式来决定取那个值