this、运算符、类型转换

一、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^12

     0b  二进制
     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没有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值