JavaScript的数据类型
数据:有用的信息
数据类型:数据的分类,保存在内存中的数据的类型,决定了数据在内容中占有多大的空间
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
1.字符串(string)
字符串是储存字符的变量
字符串可以是引号中的任意文本,可以使用单引号或者双引号
我们也可以在字符串中使用引号,只要不匹配包围字符串的引号即可
单引号 ‘’
双引号 “”
`,模板字符串
在字符串中,如何表示一个特殊字符,可以使用转移符(\)
2.数字(Number)
可以表示32位(4字节)的整数,也可以表示64位(8个字节)的浮点数,JavaScript只有一种数字类型,数字可以带小数点,也可以不带:极大极小的数字可以通过科学(指数)计数法来书写
3.布尔(Boolean)
布尔(逻辑)只能有两个值:true或false
布尔常用在条件测试中。
注意:在实际运算中,true当做1运算,false当做0运算
4.Undefined 和 Null
Undefined 这个值表示变量不含有值。
表示未定义,不存在
语义:访问的数据不存在
null:表示 空,不存在
可以通过将变量的值设置为 null 来清空变量。
null 和 undefined ,他们之间相等,和其他原始数据类型比较,则不相等
typeof 运算符 typeof() 函数
得到数据的类型
在数据前加上 typeof
- 返回值有: number string boolean object undefined function
JavaScript运算符
操作数: 参与运算的数据,称之为’元’
操作符:运算符(operator),参与运算的符号
一元(目)运算符:
.
访问符号,用于访问对象的属性
[]
访问符号,用于访问对象的属性
()
函数调用
++
将某个变量的值自增1
--
将某个变量的值自减1
二元运算符:
"+" 加
(隐式转换
加法运算 两边的操作数都是number
拼接 两个操作数只要有一个是string)
"-" 减
减法运算
负数
隐式转换
**"*" 乘**
乘法运算
"/" 除
(除数为0
结果为无穷
被除数是正数,得到结果为Infinity
被除数是负数,得到结果为-Infinity
被除数为0 除数为0 得到结果:NaN(Not a Number 非数字)
isNaN()函数,该函数用于判断一个数据是否是NaN,返回boolean
isFinite()函数,判断一个数据是否是有限的,返回boolean)
"%" 余
(余数的符号,与被除数相同。
取余的用途:
奇偶数的运算
倍数的运算
获取某个数的指定位置的数字)
"=" 等于(赋值运算符)
++ --
自增、自减
在多个表达式放到一起计算时候:注意运算顺序(从左到右)
如果遇到操作数直接替换值
比较运算符
三元(目)运算符: ? :
表达式 = 操作符 + 操作数
每个表达式都有一个运算结果 ,该结果叫做 返回值
返回值的类型叫做 返回类型
运算符的优先级
从高到底依次是:
++ --
* / %
+ -
- 从左到有依次查看
- 如果遇到了操作数,将数据的值直接取出
- 依次比较两个相邻的运算符,如果左边的运算符优先级大于右边的,这直接云运算左边的操作符
如果想提升优先级:加()
var b = true;
b = +b;
console.log(b);//1
+在变量之前
如果字符串内部是一个正确的数字,直接变为数字 ,如果是一个非数字,则得到NaN
如果一个空字符串(没有任何内容),转换为0;字符串转换时,会忽略前后空格
比较运算符 算数的优先级高于比较运算符
> < >= <= == != === !==
比较运算符的返回类型:boolean
NaN和 负无穷 (-Infinity)比较的话NaN要大
Infinity(正无穷)比任何数字都要大
-Infinity(负无穷)比任何数字都要小
== 和 ===的区别
==:比较两个数据是否相等
== 两端类型相同,直接比较两个数据本身是否相同 (两个对象比较的是地址)
== 两端类型不相同
===:两端类型和数据必须都行相同
逻辑运算符
&& 逻辑与,可以理解为并且的意思.
|| 逻辑或,可以理解为或者的意思,也就是条件可以2取一
! 逻辑非 (一元表达式)
逻辑与运算:&&
只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;
总结:假前真后
逻辑或运算:||
只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。
只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。
总结:真前假后
逻辑非(!)
如果一个操作数是一个对象,返回false;
如果一个操作数是一个空字符串,返回false;
如果一个操作数是一个非空字符串,返回false;
如果一个操作数是一个数值0,返回true;
如果一个操作数是任意的非零字符,返回false;
如果一个操作数是null,返回true;
如果一个操作数是NaN,返回true;
如果一个操作数是undefined,返回true;
短路规则
先看第一个表达式转换为布尔值得结果,如果结果为真,那么它会看第二个表达式转换为布尔值得结果
然后如果只有两个表达式的话,只看到第二个表达式,就返回该表达式的值
返回第一个为假的表达式,如果没有假的,返回最后一个
三元条件运算符
格式: 表达式1?表达式2:表达式3
说明:如果表达式1为true ,则整个表达式的结果就是表达式2的值,如果表达式false,则整个表达式的结果就是表达式3的值.
例子:
1、使用三元运算符计算2个数的最大值
<script type="text/javascript">
var a,b,c;
a=window.prompt("第1个数");//从页面中接受的是字符串
b=window.prompt("第2个数");
c=Number(a)>Number(b)?a:b; //将字符串转换为数字再进行比较
document.write(c);
</script>