1.查看数据类型:typeof
例:typeof x;
2.六种数据类型:String,Number,Boolean,Null,Undefined,Object
String 类型string 字符串
Number 类型number 数值
Boolean 类型boolean 布尔
Null 类型 Object 空值 专门用来表示一个为空的对象
Undefined 类型 Undefined 未定义
Object 类型 object 对象
基本数据类型:String,Number,Boolean,Null,Undefined
引用数据类型:Object
3.强制类型转换 String
方式一:有局限性,只针对String,Number,Boolean三种类型
- 调用被转换数据类型的toString()方法
- 该方法不会影响到原变量,它会将转换的结果返回
- 但是注意:null和undefined这两个值没有toString()方法
如果调用他们的方法,会报错
例:
var a = 123;
a = a.toString();
方式二:
- 调用String()函数,并将被转换的数据作为参数传递给函数
- 使用String()函数做强制类型转换时,
对于Number和Boolean实际上就是调用toString()方法
但是对于null和undefined,就不会调用toString()方法
它会将null直接转换为” null ”
将undefined直接转换为” undefined “
例:
var a = 123;
a = String(a);
4.强制类型转换Number()
- 字符串 - - >数字
1.如果是纯数字的字符串,则直接将其转换成数字
2.如果字符串中有非数字的内容,则转换为NaN
3.如果字符串是一个空串或者全是空格的字符,则转换为0
- 布尔 - - > 数字
true 转成 1
false 转成0
- null - - > 数字 0
- undefined - - > 数字 NaN
转换方式二:
- 这种方式专门用来对付字符串
- parseInt() 把一个字符串转换为一个整数
- parseFloat() 把一个字符串转换为一个浮点数
例:
var a = “ 123px ” ;
var b = “ w32.12 ” ;
a = parseInt(a); //a=123 从左往右开始读取数字
b = parseInt(b); //b=NaN 第一个是非数字的字符,返回NaN
5.其他进制的数字
在js中,如果需要表示16进制的数字,则需要以0x开头
如果需要表示8进制的数字,则需要以0开头
如果需要表示2进制的数字,则需要以0b开头
但是不是所有的浏览器都支持
像 ” 070 “ 这种字符串,有些浏览器会当成8进制解析,有些会当成10进制解析
例:
var a = “ 070 “;
a = parseInt(a,10); //手动固定字符串类型为10进制
6.强制类型转换Boolean
将其他类型转换为Boolean
- 使用Boolean()函数
- 数字 - - > 布尔
除了0和NaN,其余都是true
- 字符串 - - > 布尔
除了空串,其余都是true
- null和undefined 都会转换为false
- 对象也会转换为true
- 方式二(隐式类型转换):
为任意的数据类型做两次非运算,即可将其转换为布尔值
例子:
var a = “hello”;
a = !!a; //true
7.算数运算符
1.当对非Number类型的值进行运算时,会将这些值转换为Number然后进行计算
2.任何值和NaN做运算都得NaN
3.任何值做+运算时都会自动转换为String,并把字符串拼接
4.任何值做 - * / 运算时都会自动转换为Number
我们可以利用这一特点做隐式的类型转换
可以通过一个值-0 ,*1,/1来将其转换为Number
原理和Number()函数一样,使用起来更加简单
8.一元运算符:
- 负号
- 负号可以对数字进行负号的取反
- 对于非Number类型的值
它会将先转换为Number,然后再运算
可以对一个其他的数据类型使用+,来将其转换为number
它的原理和Number() 函数一样
9.自增和自减
自增 ++
- 通过自增可以使变量在自身的基础上增加1
- 对于一个变量自增以后,原变量的值会立即增加1
- 自增分成两种:后++(a++)和前++(++a)
无论是a++ 还是++a,都会立即使原变量的值自增1
不同的是a++ 和 ++a的值不同
a++的值等于变量的原值(自增前的值)
++a的值等于变量的新值(自增后的值)
注意:变量a 和 表达式a++ /++a是不同的值
例1:
var a = 1;
//console.log(a++); // 1
console.log(++a); // 2
console.log(a); // 2
例2:
var d = 20;
var result = d++ + ++d + d; // 20+22+22=64
解析:当运行表达式d++时,d++等于20,更新d的值21,
当运算++d时,++d等于22,更新d的值是22
自减 - -
- 通过自减可以使变量在自身的基础上减1
- 自减分成两种:后 - -(a - -)和前 - -(- - a)
无论是a - - 还是 - - a,都会立即使原变量的值自减1
不同的是a - -和 - - a的值不同
a - - 是变量的原值(自减前的值)
- - a 是变量的新值(自减后的值)
10.逻辑运算符:
!非
- !可以用来对一个值进行非运算
- 所谓非运算就是值对一个布尔值进行取反操作
true变false,false 变 true
- 如果对一个值进行两次取反,它的值不会变化
- 如果对非布尔值进行运算,会将其转换为布尔值,然后取反
- 可以利用这一特点,将一个其他的数据类型转换为布尔类型
& & 与
- &&可以对符号两侧的值进行与运算并返回结果
- 运算规则
两个值中只要有一个值为false就返回false,
只有两个值都为true时,才返回true
- JS中的“与”属于短路与,
如果第一个值为false,不会看第二个值,不会返回结果
- 在运算中查看是否有false,只要有false就不会返回结果
| | 或
- | |可以对符号两侧的值进行或运算并返回结果
- 运算规则:
两个值中只要有一个true,就返回true
如果两个值都为false,才返回false
- 或运算就是在运算中找true
- JS中的“或”属于短路的或
如果第一个值为true,不会检查第二个值,直接返回结果
11.非布尔值的与或运算:
- & & | | 非布尔值的情况
- 对于非布尔值与或运算时,先转换为布尔值,然后再运算,并且返回原值
- 与运算(&&):
如果第一个值为true,则必然返回第二个值
如果第一个值为false,则直接返回第一个值
- 或运算(||):
如果第一个值为true,则必然返回第一个值
如果第一个值为false,则直接返回第二个值
例:
var result = 2 && 1; // true && true; 返回原值1;
var result = NaN && 0; // false && false; 返回原值NaN;
12.关系运算符:
- 非数值的情况
- 对于非数值进行比较时,会将其转换为数字然后再比较
- 如果符号两侧的值都是字符串,不会将其转换为数字进行比较
而会分别比较字符串中的Unicode编码
- 任何值和NaN做比较都是false
- 比较两个字符串时,比较的是字符串的字符编码
- 比较字符编码时是一位一位的进行比较,如果两位一样,则比较下一位,所以借用它来对英文进行排序
- 比较中文时,没有意义
- Unicode编码:A:41 a:61 1:31
- 比较两个字符串类型的数字,可能会得到不可预期的结果(只要里面有一个是数字类型就可以)
- 注意:在比较两个字符串型的数字时,一定一定一定要转型
例:console.log(“12332173627” < +“7”);
13.Unicode编码:
- JS中使用转义字符输入Unicode编码:\u四位编码
例:\u2620;
- 在网页中使用Unicode编码 :&#编码;
- 这里编码需要的是10进制
例:☠ //262016进制编码转为10进制:9760
可以使用电脑自带的计算器选择程序员进行转换进制
14.相等运算符
相等(==)
- 相等运算符用来比较两个值是否相等
如果相等返回true,否则返回false
- 使用 == 来做相等运算
- 当时用 == 来比较两个值时,如果值的类型不同则会自动进行类型转换,将其转换为相同类型,然后再比较
- NaN不和任何值相等,包括他本身
- 判断b 的值是否是NaN,通过isNaN()函数判断
- 如果是NaN返回true,否则返回false
例:
var b = 123;
console.log( isNaN(b) );
不相等(!=)
判断两个值是否不相等,如果不相等返回true,否则返回false
使用!=来做不相等运算
不相等会对变量进行自动的类型转换,如果转换后相等返回false
全等(===)
用来判断两个值是否全等,和相等类似,不同的是它不会做自动类型转换
如果两个值类型不同,直接返回false
不全等(!==)
用来判断两个值是否不全等,和不等类似,不同的是他不会做自动类型转换
如果两个值的类型不同,直接返回true
15.条件运算符
也叫三元运算符
语法:
条件表达式 ?语句1:语句2;
执行流程:
条件运算符在执行时,首先对条件表达式进行求值,
如果值为true,则执行语句1,并返回执行结果
如果值为false,则执行语句2,并返回执行结果
例:
获取下列数据中的最大值。
var a = 300;
var b = 143;
var c = 210;
var max = a > b?a:b;
max = max > c?max:c;
第二种写法:(不推荐)
var max = a > b ? ( a > c ? a : c ) : ( b > c ? b : c );
16.运算符的优先级:
优先级一样,则从左往右计算,可以使用()来改变优先级
&& 比 ||的优先级高
17.代码块:
程序是由一条一条语句构成的
语句是按照自上向下的顺序一条一条执行的
在JS中使用{}来为语句进行分组
同一个{}中的语句称为一组语句,要么全部执行,要么都不执行
一个{}中的语句称为一个代码块,在代码块后面不用再编写;了
注意:在JS中的代码块,只具有分组的作用,没有其他用途
代码块内容的内容,在代码块外部是完全可见的
18.流程控制语句:
在JS中程序是从上到下一行行执行的
通过流程控制语句可以控制程序执行流程
使程序可以根据一定的条件来选择执行
语句分类:
1.条件判断语句
2.条件分之语句
3.循环语句
条件判断语句:
- 使用条件判断语句可以在执行某个语句之前进行判断
- 如果条件成立才会执行语句,条件不成立则语句不会执行
- If语句
- 语法一:
If(条件表达式){
语句….
}
If语句在执行时,会先对条件表达式进行求值判断,
如果条件表达式的值为true,则执行if后面的语句
如果条件表达式的值为false,则不会执行if后的语句
- If语句只能控制紧随其后的那一条语句
原文:https://www.cnblogs.com/qtbb/p/11211592.html