Js 数据类型转换,及运算符

Js 数据类型转换,及运算符
慢才后生一、不同的数据类型会占用不同大小的内存空间,为数据指定相应的数据类型,可以更合理地使用内存。
二、js 中的数据类型(7 种原始类型 / 基本类型,1 种引用类型 / 复杂类型)
原始类型 / 基本类型:Number,String,Boolean,Null,Undifined,BigInt,Symbol
引用类型 / 复杂类型: Object
typeof 操作符【此为操作符,并非构造函数!typeof () 中的 () 只是将后续的内容当做一个整体而已,非必须有】
作用:以 字符串形式 返回 变量中值的 数据类型。
“undefined” 表示 变量 已使用 var,let 等关键字声明,但未赋值(初始化);
“boolean” 表示为 变量值的 数据类型为 布尔值;
“string” 表示为字符串;
“number” 表示为数值;
“object” 表示为对象;(变量值为 null 时, typeof 测出来的数据类型是 object — 特殊情况)
“function” 表示为函数;
“symbol” 表示为符号;
1.Number
一般值:整数,小数(又称 浮点数,小数运算之前,必须先把小数转换为整数!);
特殊值:NAN, Infinity, MAX_VALUE, MIN_VALUE
NaN (为 not a number 的简写) 代表一个计算错误,它是一个错误的操作所得到的结果;console.log (10 * “abc”); // NaN
NaN 和任何数据进行运算,结果都是 NaN。
Infinity, 无穷大 ;-Infinity, 负无穷大 【1/0 在 js 中值为无穷大,java 中会直接报错】
MAX_VALUE, MIN_VALUE(最大正数值,最小正数值)
用法:
var min = Number.MIN_VALUE;
var max = Number.MAX_VALUE;
isNaN () 构造函数
用法及作用
isNaN (num),判断 num 值为 NaN 则返回 true
2.String
var str = ‘qwer’;
str.length 获取 str 的 length
str [1] 获取 str 的第 2 个字母
字符串的拼接【’+’遇到 字符串,直接解释为 字符串拼接】
转义字符('、" 引号的 转义,\n 换行等)
es6 中的 模板字符串。用法(反引号中直接写 包含 以 ${} 包裹变量名的 字符串):qwer${变量名}erter
3.Boolean(共2个值,非true即false)
关系运算符 返回的结果,就是布尔数据类型。console.log (2> 1); //true
‘!’的 取反 操作。4.Undefined(只有1个值undefined)
变量 已使用 var,let 等关键字声明,但未赋值(初始化) 时,该变量的数据类型为 Undefined。被动的,很少主动用!
var uname;
console.log (uname); // 变量的值 默认为 undefined
console.log (typeof uname); // 变量中值的 数据类型 为 undefined5.Null(只有1个值Null)
用法(给一个已经声明的变量进行初始化,经常用!):var user = null;6.Object
可以表示一组数据,是其他数据的一个集合。可看作一个容器,是 js 中众多容器 {} [] set map… 中的一种。
三、js 中的 数据类型转换1.其它数据类型 转为 String类型
强转: toString () String ()
toString () 【只能把 number 和 boolean 转换为字符串!undefined、Null 都没有原型链,无法强转】
举例: var a = 100;
a 不是一个对象,a.toString (), 会瞬间把 a 包装成一个对象,这类对象叫包装对象,其中’. ‘为属性访问运算符。
String () 构造函数,强大!【可以把 number、boolean、undefined、null、字面量 (固定取值) 转换为字符串!】
隐式转换:方便!(’+’遇到 字符串,直接解释为 拼接字符串,故 字符串前直接加’+’ 即可对其完成类型转换)
【运算符 左右两侧数据类型不一致时,运算符会悄悄的把一种数据类型转为另一种数据类型,保持数据类型一致。】
2.其它数据类型 转为 Number类型
Number () 构造函数,或者前面加上”+” 【把”123”、” 123 “转成 123、空格字符串” “或空串”” 转成 0、”100px” 转成 NaN】
特殊:Number (false) 和 Number (Null) 都转为 0。Number (true) 转为 1。Number (undefined) 转为 NaN。
parseInt 转为整数 parseFloat 转为小数【能转则转!”100px” 转成 100,”px100” 转成 NaN】
3.其它数据类型 转为 Boolean类型
Boolean () 构造函数,强转
【转为 false: 0, null, NaN, undefined, 空串””。其他情况都转为 true】
四、运算符
// 运算符:具有某些特定功能的符号 + - * / %
// 操作数: 1 + 1 运算符号两侧的数据都是 操作数
// 要求:运算的时候,左右两侧的数据类型必须保持一致。如果不一致,会发生类型转换。
// 从功能上划分:【运算后,都会整体返回一个布尔值。】
// 算术运算符
// 递增递减运算符( ++ 在前,整体是一个新值 ,++在后整体是一个旧值)
// 关系运算符
【算数、递增递减、和关系运算符中,会把两边的 操作数 隐式转换为Number类型】
// 逻辑运算符(&&一假全假、||一真全真、!。注意:&&碰到第一个为false,便会立即中断后续的语句。|| 碰到第一个为true,也会立即中断后续的语句。)
// 赋值运算符
// 从操作数上划分
// 一元运算符 单目运算符
// 二元运算符 双目运算符
// 三元运算符 三目运算符 三元表达式 (表达式 ? 结果A : 结果B)
【拓展】
1.!= 隐式类型转换 不判断数据类型。!== 判断数据类型(== 与 === 同理)
2. 后端传递数据过来进行判断时,为数组时判断数组的长度,为对象时用 if (Object.keys (obj).length){},判断对象属性数组长度。
如果可能传过来 null,也有可能传过来数组,并且不希望空数组执行语句,则可以 if (res && res.length){},res 和 res.length 位置不能换,如果为 null,则直接返回 null,后面的 res.length 不执行,从而不报错,如果为 [],则 res.length 为 0,返回 0,也将空数组去除了。
3. 在 js 中根本不存在真正的空对象,理解这一点至关重要!即使时最简单的 {} 对象也会包含从 Object.prototype 继承而来的属性和方法。我们提到的” 空对象” 只是说这个对象没有自有属性,不考虑它是否有继承而来的属性。
{}、null、[] 的区别【注:在转化为 布尔值时,只有 null 转为 false![]、{} 都会被转为 true。】
{} 是一个不完全空的对象,原型链上有 Object;null 为原型链顶端,因此 Object.prototype.proto===null 为 true。
null 是完全空对象,原型链也没有。
[] 原型链上还比 {} 多一个 Array。
4. 使用 三元运算符能做到的,if else 语句也能做到。只是三元运算符不仅能用于 js,也能与 html 标签结合使用: