类型转换与运算符
类型转换:
其他字符转换为字符类型
toString();方法和String();函数
// 类型转换,指将其他数据类型转换为String、Number
let a = 10;
// 将其他类型转化为字符串
// 方式一:调用呗转换类型的toString();方法
console.log(a , typeof a);
a = a.toString();
// toString();创建了一个新的空间一个是10的字符串但是a的值并没有改变,要给a进行赋值
console.log(a , typeof a);
//null和undefined不含有toString();方法
// 方式二:调用String();函数,将被转换类型转换为字符串
let b = 23;
console.log(b , typeof b);
b = *String*(b);
console.log(b , typeof b);
// String();函数能将null和undefined类型转换为String
其他类型转换为数字类型
Number();函数(转化非数字的字符串转换出来是NaN,null类型转换出来是0)和专门转化字符的parseInt、parseFloat(将字符中的整数或者浮点数找出来)
/*
将其他类型转换为数字
*/
let a = '123';
console.log(a,typeof a);
//转换为数字,使用NUmber();函数
/*
如果数字是一个合法数字的化转换出来还是数字
如果不是数字是字符的话转换出来时NaN
如果时null是0
如果是true转换为1,如果是false转换为0
如果是undefined转换为NaN
*/
a = *Number*(a);
console.log(a,typeof a);
let b = 'abc';
console.log(b,typeof b);
b = *Number*(b);
console.log(b,typeof b);
/*
将字符串解析为一个数字
parseInt将字符转换为整数,函数从左往右依次读取一个字符中的字符
直到找到字符串中所欲的合法整数
parseFloat将字符转换为浮点数
如果是true或者false转换为NaN
去掉字符串的作用
*/
let c = '123.45abc';
console.log(c,*Number*(c));
console.log(c,parseInt(c));
console.log(c,parseFloat(c));
其他类型转化为布尔类型
用Boolean();函数将其他类型转换为布尔类型
将数字转换为Boolean类型
如果需要,作为第一个参数传递的值将转换为布尔值。如果省略或值0,-0,null,false,NaN,undefined,或空字符串(""),该对象具有的初始值false。所有其他值,包括任何对象,空数组([])或字符串"false",都会创建一个初始值为true的对象。
/*
将其他类型转化为布尔值,使用Boolean();函数
*/
//数字转化为boolean类型,除了0和NaN以外其他都是true
let a = 10;
let b = -10;
let c = 0;
let d = NaN;
let e = Infinity;
console.log(a, b, c, d, e);
console.log(*Boolean*(a), *Boolean*(b), *Boolean*(c), *Boolean*(d), *Boolean*(e))
将字符串转换为Boolean类型
//字符类型转换为boolean类型,只有字符为空的时候才会转换为false其他都是true
let a = 'hello';
let b = 'flase';
let c = ' ';
let d = '';
console.log(a, b, c, d);
console.log(*Boolean*(a), *Boolean*(b), *Boolean*(c), *Boolean*(d));
将null类型和undefined类型转换位Boolean类型
// 将null和undefined转换为Boolean类型
let a = null;
let b = undefined;
console.log(a, b);
console.log(*Boolean*(a), *Boolean*(b));
运算符
算数运算符:
通过运算符可以对一个值或者多个值进行运算
对一个值进行运算,称一元运算符
对两个值进行运算,称二元运算符
算数运算符
+将两个值进行加法运算
-将两个值进行减法运算
*将两个值进行乘法运算
/将两个值进行除法运算
**幂运算
%模运算
let a = 10 - 5;
let b = 10 / 0;
let c = 10 * 10;
let d = 10**0.5;
let e = 10 % 2;
console.log(a, b, c, d);
隐式类型转换,除了字符进行运算以外,其他类型都会先转换为数字进行运算
//对字符串进行给加法运算
// 除了字符串的加法以外,对其它类型的值进行算数运算时都后将其他类型转换为数字
let result = "hello" + "world!";
let result1 = true + false;
let result2 = 1 * null;
let result3 = 13 - undefined;
console.log(result,result1, result2, result3);
任何值和字符串做加法时都会转换成字符串然后和字符串进行拼串
let a = '123' + 123;
let b = 'hello' + 123;
console.log(a,b);
console.log(typeof a,typeof b);
可以将任何类型加一个空串,就将类转换为字符串了
一元运算符
typeof运算符、一元的+、一元的-、自增和自减
/*
typeof
检查一个值的类型
一元的+
不会对数值产生任何影响
一元的-
会对数值进行符号取反
自增和自减
自增(++)
前加加和后加加
无论是++d还是d++;都会让d加1;它们的功能是相同的但是返回的结果是不同的
d++返回的是变量自增前的值,++d返回的是变脸自增后的值
自减(--)
d--和--d都会让d减1然后汉辉的结果不同,和自增差不多
*/
let a = 10;
a = +a;
let b = 10;
b = -b;
console.log(a, b);
console.log(typeof a, typeof b);
//可以利用一元的+将字符转换为数字(隐式的类型转换)
let c = '10';
c = +c;
console.log(c,typeof c);
let d = 10;
console.log('d++ = '+ d++);
console.log('++d '+ ++d);
// 自减
let e = 10;
console.log('e-- = '+ e--);
console.log('--e '+ --e);
赋值运算符
/*
赋值运算符
用来将一个值赋值给一个变量
=将右边的赋值给左边的
+=将左边的值加右边的值赋值给左边
-=将左边的值减右边的值给左边
*=将左边的值值乘右边的值赋值给左边
/=将左边的值除右边的值赋值给左边
**=将左边的值幂运算右边的值赋值给左边
%=将左边的值取模右边的值赋值给左边
*/
let a = 10;
a = a + 10;
console.log(a);
a += 5;
console.log('+=5',a);
a -= 5;
console.log('-=5',a);
a *= 5;
console.log('*=5',a);
a **= 5;
console.log('**=5',a);
a /= 5;
console.log('/=5',a);
a %= 5;
console.log('%=5',a);
会导致变量发生改变的(为变量进行重新的赋值)
A = xx
A += xx
A -= xx
A *= xx
A **= xx
A %= xx
还有自增和自减
逻辑运算符
/*
逻辑运算符
逻辑非!
取反操作,如果值是true,则会变成false,如果值是false,则会变成true
如果对一个非布尔值进行逻辑非运算,他会将其转换为布尔值,然后再取反
利用这一点可以将其他类型取两次反,然后转换为布尔类型
逻辑与&&
如果两侧的值都是true那么就返回true,其他都返回false
逻辑或||
如果两侧的值只要有一个true就返回true,其他都返回false
*/
let result = true;
console.log('!result', !result);
console.log('result&&result', result&&result);
console.log('result&&false', result&&false);
console.log('result||false',result||false);
console.log('false||false',false||false);
非布尔值逻辑运算
如果对非布尔值进行与运算,会首先将其转换为布尔值,然后运算,最终返回原值
/*
与运算
如果对非布尔类型进行与运算
与运算是找false
或运算
如果第一个值是true,则直接返回第一个值,如果第二个值是true就返回第二个
*/
let result = 'hello' && 1;
console.log(result);
result = 1&&'hello';
console.log(result);
//NaN和1
result = 1&&NaN;
console.log(result);
result = NaN&&1;
console.log(result);
//NaN和0
result = 0&&NaN;
console.log(result);
result = NaN&&0;
console.log(result);
关系运算符
/*
关系运算符
用来比较两个值之间的大小关系
如果关系成立则返回true不成立则返回false
\>比较左侧值是否大于右侧值
\>=比较左侧值是否大于等于右侧值
<比较左侧值是否小于右侧值
<=比较左侧值是否小于等于右侧值
对于非数字类型的值进行比较时,浏览器会自动将其直接转换为数字
如果比较的是两个字符串的大小则情况比较特殊
*/
let result = 10 > 5;
console.log(result);
result = 10 >= 10;
console.log(result);
result = 10 < 7;
console.log(result);
result = 10 <= 7;
console.log(result);
//非数字类型
result = true > false;
console.log(result);
result = '55' > 10;
console.log(result);
result = null < '10';
console.log(result);
result = true < '10';
console.log(result);