6种基本数据类型:
1.string 字符串类型
2.number 数字类型
3.null 空值
4.undefined 未定义类型
5.boolean 布尔类型
6.object 类型(特殊类型)
数据类型转换
一、自动转换:
1.字符串与任何类型相加都是字符串
2.布尔值与数值相加,true转化为1,false转化为0
3.数字与undefined相加,得到NaN
4.数字与null相加,null被转换成0
5.布尔值与undefined相加得到NaN
6.布尔值与null相加,都被转化为数字,true转化为1,false转化为0,null被转化0
7.undefined与null相加,得到的是NaN
二、强制转换
1.string()类型
2. Number()函数:
-字符串转数字
1.如果是纯数字的字符串,则直接转换为数字
2.如果字符串中有非数字的内容,则转化为NaN
3.如果字符串是空串或者是空格,则转换为0
-布尔转数字
1.true转换为1
2.false转换为0
-NULL值转数字 1.结果为0
-undefined转数字 1.数值转换为NaN
任何值和NaN做运算都得NaN
转换为字符串只需要为任意类型加一个(“空串”)即可转化为string
任何值做- * /运算时都会自动转换为number 可以通过-0 *1 /1 来将其转换为numbe
对于非number类型的值:它会先将其转化为number,然后再运算,可以对一个其他的数据类型使用+,来将其转化为number,它的原理和number()函数一样
自增自减
自增:后++和前++(a++ 、++a)
无论是a++还是++a都会立即使原变量自增1
a++的值等于原变量的值(自增前的值)
++a的值等于原变量自增后的值
自减:后--和前--(a-- 、--a)
无论是a--还是--a都会立即使原变量自减1
a--的值等于原变量的值(自减前的值)
--a的值等于原变量自减后的值
逻辑运算:
与:1.&&两个值中只要有一个值为false 那么就返回false
2.只有两个值都为true才会返回true
3.如果两个值都为true,则返回后边的true
4.如果两个值中有false,则返回靠前的false
或:|| 1.只要有一个值为true 那么就会返回true 如果两个都为false 那么就会返回false
2.如果第一个值为true,则直接返回第一个值
3.如果第一个值为false,则返回第二个值。
非:!就是对布尔值取反 真变假,假变真。两次取反不会变化
如果对非布尔值进行运算,则会将其先转换为布尔值,然后再取反
运算符:
1==1 true、“1”==1 true、true == “1”true、null==0 false
undefined 衍生自null 所以这两个值做相等判断时,会返回true
NaN不和任何值相等,包括他本身
可以通过isNaN()函数来判断一个值是否为NaN
条件运算符:
运算符的优先级:
非>与>或
流程控制:
1.条件判断语句
2.条件分支语句
3.循环语句
if语句
语法一:
if(条件表达式 )
语句
if语句在运算时,会先对条件表达式进行求值判断
如果条件表达式的值为true,则执行if后的语句
如果条件表达式的值为false,则不会执行if后的语句
if语句只能控制紧随其后的那个语句,如果可以控制多条语句,可以将这些语句统一放到代码中
语法二:
if...else...:
当该语句执行时,会对if后的条件表达式进行求值判断。如果该值为true,则执行if后的语句
如果该值为false,则执行else后的语句
语法三:
if...else if...else:
执行该语句时,会从上到下依次对条件表达式进行求值判断,如果值为true,则执行当前语句,
如果值为false,则继续向下判断。 如果条件都不满足则执行else后的语句 该语句中只会有一个代码块被执行
一旦代码块执行了,则直接结束语句
switch分支
switch(变量){
case 值:
执行匹配成功的代码
break;
case 值:
执行匹配成功的代码
break;
default;
以上的值都不匹配,可以执行默认的代码
}
在执行时,会依次将case后的表达式的值和switch后的条件表达式的值进行全等比较
如果比较为true,则从当前case处开始执行代码
如果为false,则继续向下比较
所以我们可以在每个case后面跟着一个break,确保只会执行case后的当前的语句,不会执行
其他的case
如果所有的比较结果都为false,则只执行default后的语句
注意:如果不break 那么从匹配开始,后面内容全部输出
Boolean()函数
1.非空字符串都转为true 、空字符为false。
2.非0和NaN的数字都转为true、0和NaN的都转为false
3.null和undefined都转为false
空格属于不可见字符 为true 、空字符代表什么都没有 为false
数字不管正负都是true(0为false、null为false、undefined为false)
for循环:
for(起始变量;循环变量;破坏条件){
重复执行的代码
}
判断奇偶数:求余(%2=0偶数、=1奇数)
双重循环的运行规则:先走外面的第一次循环、再走里面的所有循环
while循环:
while(条件){
循环执行的代码
破坏循环条件
}
do{}while()
while和do{}while()跟for循环一样,但格式不同
while在条件不成立时,一次也不执行,dowhile会执行一次
break:终止 continue 跳出
字符串拼接:
1.
三目运算:
与if特别像,不过写法更简单
格式:条件?条件为真时取得值:条件为假时取得值
函数:
可以简化代码,便于维护:
格式:
function 名称(形参,形参,。。。){
函数代码;
return:返回值
}
函数声明后,需要调用一下函数才能执行内部代码!!!
调用:
名称(实参,实参,...);
函数的名称命名规则跟变量一样,不能用中文,不能以数字开头,不能用
除了$和_以外的特殊字符,不能用关键字和保留字,在声明变量的时候尽
量使用有意义的名称,且用驼峰式命名;myName等
形参与实参的概念:
形参:形式的上的参数,没有具体的意义,只是占位置
实参;实际的值,与形参是一一对应的关系
当参数比实参多时,多余的形参,默认值为undefined
当参数比实参少时,多余的实参,自动忽略。
return的作用:
函数运行过的结果就是return的结果
不添加return,默认返回值为undefined
将一个结果返还给函数
终止return后面的代码
函数的作用域:
函数内部的变量或函数只能作用到函数内部范围,外部是无法访问的
作用域链:
内部函数:
函数的嵌套就是内部函数
arguements对象:
在函数中默认存在一个对象,这个对象就是arguements
arguements.length得到实参的数量长度
arguements.callee得到本身函数,即函数体
回调函数:
将函数当做实参传到另一个函数中,在另一个函数内部调用,成为回调函数
递归函数:
函数内部不断的调用本身,以达到循环效果
闭包函数:
可以将函数内部的变量返回到外部,在外部访问
匿名函数:
特点:只能调用一次
注意点:需要有分号。一般会在匿名函数自调用的前面加分号,
防止漏加分号