一、this的初步认识
例如:
let Owrap = document.getElementById("wrap")
Owrap.onclick = function(){
this.style.color = "red"
}
此处的this即Owrap.在任意作用域中都有this指向,在同一作用域中,this指向相同。函数内的this指向不是在定义时决定的,而是执行时决定的
二、运算符
1.算术运算符
- +号,加号两边任意一边出现字符串,就简单拼接,如:“20”+10+3 -->20103
- -号,其结果必为数字,若不是数字,则强行转换,如:“abc”-“数据” -->NaN.即 not a number,其为数字类型
- *号,/号,%号,都是转换为数字
2.赋值运算符
=号,其中牵扯前置++/–、后置++/–,即自增,自减=号后面的内容赋给前面的内容.
3.比较运算符
- 大于、小于、大于等于、小于等于
- == 等于
- ===全等于,无特殊要求时,皆为全等于
- != 不等于
- !== 不全等于
比较运算符的结果为布尔值,即true或false.
let a = "10";
let b = 10;
console.log(a == b) //true,==只判断值
console.log(a === b) //false,===判断值和类型
4.逻辑运算符
- && 与;两边都为真,才为真,否则为假
- || 或; 两边都为假,才为假,否则为真
- ! 非;取反,真为假,假为真
逻辑运算符根据数据的布尔值来计算。一般来说,
布尔值为false的:false、0、undefined、null、NaN、空字符串
其它皆为true.
用逻辑运算符来赋值时,所取得的值为判断时停留的值!!
例如:let x = 3 && (2+2); //结果为4,在判断时,先运算&&,再运算+
let x = "" && 3; //结果为""
- &&专业解释;A&&B,A为真,返回B;A为假,返回A; (这里不要想着返回布尔值)
- ||专业解释;A||B,A为真,返回A;A为假,返回B;
- !专业解释;运用!运算时,强行将其转为布尔型,取反;
优先级比较:!>&&>||>?:
5.三目运算符
let wo = true;
let type = wo?"男":"女"; //此处为wo为true的话,则为男,否则为女
console.log("我是" + type) //我是男
A?A:B <=> A||B
A?B:A <=> A&&B
注意!不要写很复杂的与或运算
三、隐式类型转换
六大数据类型:数值 字符串 布尔 undefined null 对象
1.转数值 Number()
-
布尔型转数值
true —> 1
false —> 0 -
字符串转数值(一般参与到乘、减、除法中)
转时不可为表达式,只能为一个值
看起来像数字,就可转成数字
不管怎样,转成的结果一定为数值
转不了就是NaN
Infinity和科学计数法、各进制(0b3526、0x22266)都可转数字
科学计数法:1e12 表示 1*10^120b 二进制 0x 十六进制 0 八进制
-
undefined转数值,其结果为NaN
-
null转数值,其结果为0
-
对象转数值
一般对象转数值都为NaN
特殊如:[]空数组,其结果为0 [12]数组,其结果为12 [3,4,2,5]数组,结果为NaN
2.转字符串 String()
- 数字转字符串
简单加引号即可
字符串参与的加法优先转化成字符串 - 布尔型转字符串
简单加引号即可,若无数字参与,字符串拼接即可 - undefined转字符串
结果为"undefined" - null转字符串
结果为"null"
- 对象转字符串
一般对象转字符串的结果为[object Object]
let obj = {}
console.log(String(obj)) //[object Object]
console.log({} + {}) //[object Object][object Object]
对象分为:
函数(约定了名字和执行内容的一个整体)
数组[,]
- 函数转字符串
function fooo(){
}
console.log(fooo) //f fooo{}
function fooo(){
//hdh
}
console.log(String(fooo)) //function fooo{//hdh}
function fooo(){
//hdh
}
let result = String(fooo) //在控制台输入result查看时,显示“function fooo{//hdh}”
- 数组转字符串
去掉中括号
let arr = [1,2,3,4]
console.log(String(arr)) //1,2,3
let arr = [1,[2,[3,4]]]
console.log(String(arr)) //1,2,3
let arr = [1,[2,{x:1}]]
console.log(String(arr)) //1,2,[object Object]
这些都是假象,真是的转字符串方法是,调用自己的toString方法
let a = {}
console.log(a.toString()) //[object Object]
万物皆对象,是对象,就有toString方法,但Null、undefined没有