3.6 获取变量数据类型
typeof可以获取变量数据类型
console.log(typeof 2023);
console.log(typeof "Hello,World!");
console.log(typeof true);
console.log(typeof undefined);
console.log(typeof null);
var age=prompt('请输入你的年龄');
console.log(age);
console.log(typeof age);
prompt取过来的值都是 字符型 的
3.7 字面量
一些固定的值,比如:1、2 、3、true、false、null、NaN、“hello”,字面量都是不可以改变的;
由于字面量不是很方便使用,所以在JavaScript中很少直接使用字面量,使用的而是变量。
console.log(18);
console.log('18');
console.log(true);
console.log(undefined);
console.log(null);
console控制台中:Number型为蓝色,String型为黑色,Boolean型为深蓝色,Undefined和Null型为灰色。
3.8 数据类型转换
使用表单、prompt获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算,而需要转换变量的数据类型。
3.8.1 转换为String字符串类型
方法一:变量.toString()
该方法不会影响到原变量,它会将转换的结果返回,null和undefined这两个值没有toString()方法,如果调用它们,会报错。
方法二:String(变量)
对于null和undefined,就不会调用toString()方法,它会将 null 直接转换为 “null”,将 undefined 直接转换为 “undefined”。
var a = 123;
a = String(a);
console.log(a);
console.log(typeof a);
var b = undefined;
b = String(b);
console.log(b);
console.log(typeof b);
var c = null;
c = String(c);
console.log(c);
console.log(typeof c);
方法三:利用+拼接字符串的方法实现转换(隐式转换)
var a = 123;
a = a + "";
console.log(a);
console.log(typeof a);
3.8.2转换为Number数字类型
方式一:parseInt(变量) 将字符型转换为数字型,得到的是整数
var year = prompt('请输入今年年份');
console.log(parseInt(year));
console.log(parseInt('3.14'));
console.log(parseInt('3.99'));
console.log(parseInt('120px'));//先识别到120,px识别不出就被砍掉了
console.log(parseInt('no120px'));//no识别不出,之后的全部砍掉,所以得NaN
方式二:parseFloat(变量) 将字符型转换为数字型,得到的是小数、浮点数
console.log(parseFloat('3.14'));
console.log(parseFloat('3.99'));
console.log(parseFloat('120px'));
console.log(parseFloat('no120px'));
方式三:利用Number(变量)
字符串 转换 数字
如果是纯数字的字符串,则直接将其转换为数字;
如果字符串中有非数字的内容,则转换为NaN;
如果字符串是一个空串或者是一个全是空格的字符串,则转换为0。
布尔 转换 数字
true 转成 1
false 转成 0
null 转换 数字
null 转成 0
undefined 转换 数字
undefined 转成 NaN
//字符串转换成数字型
console.log(Number('3.99'));
console.log(Number('120px'));
console.log(Number('no120px'));
console.log(Number(' '));
//布尔型转换成数字型
console.log(Number(true));
console.log(Number(false));
//null转换成数字型
console.log(Number(null));
//undefined转换成数字型
console.log(Number(undefined));
方式四:利用算术运算 - * / (隐式转换)
console.log('12' - 0);
console.log('123' - '120');
3.8.3 转换为Boolean布尔类型
将其它的数据类型转换为Boolean,使用Boolean(变量)函数。
代表空、否定的值会被转换为false,例如' '、0、Null、Undefined、NaN等 ;其余值转换为true。即:
字符串 转换 布尔型
空串,如' ',转成false;
非空串,转成true。
数字 转换 布尔型
0 和 NaN 转成false,其余转成true
Undefined、Null 转换 布尔型
转成false
四、标识符、关键字、保留字
4.1 标识符
指开发人员为变量、属性、函数、参数取的名字,不可为关键字或保留字。
4.2 关键字
指JS本身已经使用了的字,不能再用它们充当变量名、方法名
4.3 保留字
预留的关键字,即,现在虽然还不是关键字,但是未来可能会成为关键字,同样不能再用它们充当变量名、方法名
五、运算符
也称为操作符,用于实现赋值、比较和执行算数运算等功能的符号
5.1 算术运算符
console.log(1+1);//2
console.log(1-1);//0
console.log(1*1);//1
console.log(1/1);//1
console.log(4%2);//0
console.log(5%3);//2
//浮点数运算容易出问题
console.log(0.1+0.2);//0.30000000000000004
//不要直接判断两个浮点数是否相等
var num = 0.1 + 0.2;
console.log(num == 0.3);//false
表达式,由数字、运算符、变量等以能求得数值的有意义排列方法所得的组合,表达是最终的结果返回给我们,称为返回值。
5.2 递增和递减运算符
前置递增(递减)运算符(++/--写在变量的前面):
var a=10;
++a;
console.log(a);//11
var b=10;
console.log(++b + 10);//21
先加/减1,后返回值
后置递增(递减)运算符(++/--写在变量的后面):
var a=10;
a++;
console.log(a);//11
var b=10;
console.log(b++ + 10);//20
先返回原值,再加1
5.3 比较运算符
两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值。即,如果相等会返回true,否则返回false。
//== 默认转换数据类型,会把字符串类型的数据转换为数字型(此时存在隐式转换),只要求数值相等
console.log(18 == 18);//true
console.log(18 == '18');//true
//=== 要求两边的值和数据类型完全一样
console.log(18 === 18);//true
console.log(18 === '18');//false
5.4 逻辑运算符
进行布尔值运算,返回值也是布尔值
//&& 两侧均为true,结果才为true;只要有一侧为false,就为false
console.log(3>5&&3<7);//false 因3>5为false
console.log(3<5&&3<7);//true
//|| 或,只要有一侧为true,结果为true;只有两侧均为false时,结果才为false
console.log(3>5&&3<7);//true 因3<7为true
console.log(3>5&&3>7);//false 因两侧均为false
//!
console.log(!true);//false
短路运算(逻辑中断)
当有多个表达式(值)时,如果左边的表达式(值)可以确定结果时,就不再继续运算右边表达式的值。
①逻辑与
表达式1 && 表达式2
若表达式1的值为真,返回表达式2
若表达式1的值为假,返回表达式1
console.log(123 && 456);//数字里除0以外均为真,则表达式1:123为真,返回表达式2,即输出456
console.log(0 && 456);//表达式1:0为假,返回表达式1,即输出0
//0 NaN ' ' Null Undefined
②逻辑或
表达式1 || 表达式2
若表达式1的值为真,返回表达式1
若表达式1的值为假,返回表达式2
var num = 0;
console.log(123 || num++);//表达式1:123为真,返回表达式1:123,即num++不再执行,则num仍为0
console.log(num);
5.5 赋值运算符
把数据赋值给变量的运算符
5.6 运算符优先级
一元运算符里面的逻辑非优先级很高
逻辑与比逻辑或优先级高