强制类型转换
-指将一个类型强制转换为其他的数据类型
-类型转换主要指将其他的数据类型转换为String Number Boolean
其他的数据类型转换为 **String**
1.调用被转换数据类型的 toString()方法---不会影响到原变量,它会将转换的结果返回
var a=13;
a=a.toString();
console.log(typeof a);
console.log(a);
注意:
-null 和 undefined 这两个值没有 toString()方法。
如果调用,会报错。
2.调用 String()函数,并将被转换的数据作为参数传递给函数
a=123;
String(a);
注意:
-对于 Number 和 Boolean 而言,本质上就是调用 toString()方法。
-但是对于 null 和 undefined,则不会调用 toString()方法。它会将 null 直接转换为 "null"[字符串null]。将 undefined 直接转换为 "undefined"。```
```javascript
将其他的数据类型转换为 Number:
1.使用 Number() 函数
var a="123";
a=Number(a);
console.log(typeof a);
console.log(a);
字符串 --> 数字:
-如果字符串中是纯数字,则直接将其转换为数字。
-如果字符串中有**非数字**的内容,则转换为 NaN。
-如果字符串是一个空串或者是一个全是空格的字符串,则转换为 0。
布尔 --> 数字:
true 转成 1
false 转成 0
null --> 数字 0
undefined --> 数字 NaN
2.这种方式专门来对付字符串
-parseInt()把一个字符串转换为一个整数
var a = '123px';
a= parseInt(a;
console.log(typeof a);
console.log(a);
-arseFloat()把一个字符串转换为一个浮点数
-parseFloat()和 parseInt()的作用类似,不同的是,parseFloat()可以获得有效的小数部分。
var a = '123.456.789px';
a=aparseFloat(a);
console.log(a);
-如果对非 String使用 parseInt()或 parseFloat(),它会先将其转换为 String, 然后再操作
a = true;
a=parseInt(a);
console.log(a);
在js中,如果需要表示16进制的数字,则需要以0x开头
a=0x10;
a=0xff;
console.log(a);
如果需要表示8进制的数字,则需要以0开头
a=070;
如果需要表示2进制的数字,则需要以0b开头(部分浏览器支持)
a=0b10;
注意:
a="070"
a=parseInt(a,8);
将其他的数据类型转换为 **Boolean**类型:
1.使用Boolean()函数
var a=123;
a = Boolean(a);/专换为布尔值
console.log(typeof a);
console.log(a);
-数字 --> 布尔。
除了 0 和 NaN,其余的都是 true。
-字符串 --> 布尔。
除了空串,其余的都是 true。
-null 和 undefined 都会转换为 false。
-对象也会转换为true
2.隐式转换类型:
-为任意的数据类型做两次非运算,即可将其转换为布尔值
如: var = "hello";
a = !!a;
运算符:也叫操作符。---通过运算符可以对一个或多个值进行运算,并获取运算结果。
比如:typeof 就是运算符,可以来获得一个值的类型。---它会将该值的类型以**字符串**的形式返回,返回值可以是 number、string、boolean、undefined、object。
var a=123;
var result = typeof a;
console.log(typeof result);
算术运算符:
+ ---如果对两个字符串进行**加**运算,则会做拼串,会将两个字符串拼接
-当对非Number类型的值进行运算时,会将这些值转换为Number然后再运算
result = true + false ;
console.log(result);
-任何值和NaN做运算都得NaN
-任何的值和**字符串**加法运算,都会先转换为字符串,然后再和字符串做拼串的操作
result = 123 + "1";
console.log(result);
·我们可以利用这一特点,来将一个任意的数据类型转换为String
·我们只需要为任意的数据类型 + 一个""即可将其转换为String
·这是一种**隐式**的类型转换,由浏览器自动完成,实际上它也是调用String()函数
任何值做 - 、*、/、 % 运算时会自动转换为Number
-我们可以利用这一特点做**隐式**的类型转换
-可以通过一个值-0 *1 /1 来将其转换为Number
-原理和 Number()函数一样,使用起来更加简单
%---取模运算(取余数)
一元运算符 --- 只需要一个操作数。
+ 正号 ---正号不会对数字产生任何影响。
- 负号 ---可以对数字进行取反
·对于非Number类型的值进行运算时,会将这些值转换为Number然后再运算
·可以对一个其他的数据类型使用+ ,来将其转换为Number
var result = 1 + + "2" + 3;
console.log(result);
·使用原理和 Number()函数一样
自增 ++ ---通过自增可以使变量在自身的基础上增加1
-对于一个变量自增后,原变量的值会立即自增1
-自增分两种,后++(a++)和前++(++a)
-不同的是:a++ 和 ++a的值不同
a++ 的值等于原变量的值(a自增前的值)
++a 的值等于新值 (a自增后的值)
var a=10;
a++;
console.log(a++);
自减 -- ---通过自减可以使变量在自身的基础上减1
(原理同自增一样)
例:var n1 = 10;
var n2 = 20;
var n = n1++;
console.log('n='+n);
console.log('n1='+n1);
n = ++n1;
console.log('n='+n);
console.log('n1='+n1);
var n = n2--;
console.log('n='+n);
console.log('n2='+n2);
n= --n2;
console.log('n='+n);
console.log('n2='+n2);
逻辑运算符:
JS中为我们提供了三种逻辑运算符
- ! 非---对一个布尔值进行取反操作。
·true变false,false变true
·如果对一个值进行两次取反,它不会变化
·如果对**非布尔值**进行非运算时,会先将其转换为**布尔值**,然后再运算,但返回结果是布尔值。
let b = 10;
b = !b
console.log(b);
console.log(typeof b);
·故我们可以利用该特点,来将一个其他的数据类型转换为布尔值
·可以为一个任意数据类型取两次反,来将其转换为布尔值
·原理和 Boolean()函数一样
- && 与:---可以对符号两侧的值进行与运算并返回结果
(两个都为真,结果才为真)
-两个值中只要有一个值为false就返回false
两个值中都为true,才返回true
-JS中的&&属于短路的与:
如果第一个值为false,则不会执行后面的内容。
如果第一个值为 true,则继续执行第二条语句,并返回第二个值。
- || 或:---只要有一个是真,结果就为真。
-两个值中只要有一个值为true就返回true
两个值中都为false,则返回false
-JS中的||属于短路的或:
如果第一个值为true,则不会执行后面的内容。
如果第一个值为 false,则继续执行第二条语句,并返回第二个值。
&& || 非布尔值的情况
-对于非布尔值的与或运算时,会先将其转换为布尔值,然后再运算,但返回结果是原值
var result = 5 && 6;
-与运算:如果两个值都为true,则返回后边的
console.log('result:' + result);
-与运算:如果两个值都为true,则返回后边的值
如果两个值有false,则返回靠前的值
如果第一个值为false,则直接返回第一个值
如果第一个值为true,则必然返回第二个值
-或运算:如果第一个值为true,则直接返回第一个值
如果第一个值为false,则返回第二个值
如果两个值都为false,则返回的是最后一个值