今日总结
小技巧:出现Unexpected token 一般是出现语法错误,与中英文输入法,逗号,分号,括号等有关
答题逻辑:what why how
其他类型转number
三个特殊number
---->1 0 NaN
string转number
1:数字字符直接转
2:空字符,以及纯空格字符转为0
3:null会转化为0,其他字符 NaN
//加号遇到字符串变为连接运算符,结果也是字符串
var str ='566'+1//结果为5661
//下面运算中字符串隐式转化为number类型后运算
var res1='234'-1//'234'先隐式转化为234然后运算
var res2='非数字字符'-1//NaN-1 结果为NaN
//NaN不能进行运算,如果运算 结果要么是NaN 要么是false
bool转number
//boolean转number
Number(true)//结果为1
Number(false)//结果为0
//true 1 false 0
undefined转number
Number(undefined)//结果为NaN
///undefined转number 为NaN
null转number
Number(null)//结果为0
//null转number为0
Array和Object转number
var res3=[]+1;
//''+1
//'1'
var res4 =['1234']-1
//'1234'-1
//1234 -1
//12333
var res4=['123','12']-1
//'123,12'-1
//NaN -1
//NaN
var res5={}-5
//'[object object]'-5
//NaN-5
//NaN
/* 总结:数组如果和对象转化number运算,第一步先转字符串,再转其他类型,最后再运算;基本类型数据之间的相互转化只转化一次,引用类型转为基本类型先变字符串再变其他 */
//一些运算过程
var result =1+true-false-'123'+'123'
// 1+1-0-123+'123'
//'-121123'
var result1=undefined +1
//NaN+1
//NaN
var result2=null+1
//0+1
//1
var result3=[1,3,4]+234
//'1,3,4'+234
//'1,3,4234'
其他类型转String
数字转String
console.log(String(123));//123
bool转String
console.log(String(true));//true
console.log(String(false));//false
undefined转String
console.log(String(undefined));//undefined
null转String
console.log(String(null));//null
Array转String
console.log(String([]));//''
console.log(String([1,2,3]));//'1,2,3'
Object转String
console.log(String({}));//'[object Object]'
console.log(String({name:'aaa'}));//'[object Object]'
/* +与String的同时出现 会导致出现出现字符串的拼接情况,但是NaN的出现也会导致结果为NaN或者false,其他算数运算符的出现(如:- * /等)有可能会导致隐式转化再运算结果,比较运算符的出现导致结果是bool型
运算符有:算数运算符,比较运算符, 赋值运算符,逻辑运算符等等
隐式转化为字符串相当于触发了哪一个函数?
String
什么情况下其他类型数据会转化为String()
1:遇到连接运算符 2:对象和数组与其他类型数据运算的时候 */
var res=1123+'123'
//'1123'+'123'
// '1123123'
var res3=[123]+{}
//'123'+'[object object]'
//'123[object object]'
其他类型转bool
//除了以下情况布尔类型都是true
console.log(Boolean(false));//false
console.log(Boolean(0));//false
console.log(Boolean(''));//false
console.log(Boolean(undefined));//false
console.log(Boolean(null));//false
console.log(Boolean(NaN));//false
//什么情况下会隐式转化为布尔类型
//---->当遇到比较运算符,和个别情况关系运算符
//布尔类型数据如何应用?
数据类型的验证
var data = {hhh:'123'};
//验证是否是number?
var isNum = typeof (data) === 'number'
//验证是否是string?
var isstr = typeof (data) === 'string'
//验证是否是Boolean?
var isBool = typeof (data) === 'boolean'
//验证是否是NaN?
var isNaN_ = isNaN(data);//实参:待验证数据,输出验证结果
//验证是否是undefined?
var isudf = data === undefined
typeof (data) === 'undefined'
//验证是否是null?
var isNull = !data && !isNaN(data) && typeof (data) != 'undefined' && data != 0
/* 判断思路:所有数据转化false只有undefined null 0 NaN false
如果一个数据不是undefined 并且不是0 并且不是NaN 并且不是false排除法,返回true就是null返回false就是上面4个值其中之一 */
//验证是否是数组?
var isArr = Array.isArray(data)//是true 不是数组 false
//验证是否是对象?
var isObj = data.constructor === Object//是true 不是false
//高难度:验证某一个字符是否满足某个格式?
条件语句
//1:为什么有条件句?
//部分表达式需要按需执行,所以需要条件句
//根据业务分析逻辑并编写条件表达式
//2:条件句有什么特点?
//3:什么时候用条件句?
//在同一个业务中有分支情况使用条件句,在当前情况下多分支只能执行一个
//4:常见的结构有哪些?
//5:条件句可以有多少分支?
//可以有一个也可以有多个
if (condition) {
}else if(true){
//找到第一个true就不往下执行了
}else if(true){
}else{
//以上条件都不满足时执行此处
}