变量及逻辑运算符

对象理解:

    对象 = 属性 + 方法

    innerHTML:读写(获取和设置)元素对象内部的内容,包含标签

    对象名.onclick = function() { //点击后执行后面的花括号里面的代码。

            对象名.innerHTML = 事件;

        }

变量的类型:

    typeof():检测数据的类型,使用时typeof后面的括号可以省略

    一、变量的数据类型(6种)

        1、基本类型(5种)

        number数字  string字符串  boolean布尔值  null空对象   undefined未初始化

            1.1.number数字类型,任何情况下直接赋值。

            1.2.string字符串:字符串必须添加引号(单双引号都可以,但是注意单双引号的嵌套关系)

            1.3.boolean布尔值:布尔值只有两个true和false分别表示真和假。

            1.4.特殊类型:null和undefined

        2.复杂类型(引用类型)(1种)

            引用类型 - object(对象)

        

        总结:

            1.typeof检测的是值的类型

            2.区分undefined为值和为类型的区别。

            3.typeof无法输出null类型,null的类型是object

            4.js的两种特殊的数据类型是:null和undefined

赋值、数学、关系运算符

    一、赋值运算符: =

           复合赋值运算符: +=  -=  *=  /=  %=

    二、数学运算符: "  +  -  *  /  %  "

        1.  加号+ : 加法运算   字符串的拼接。

            如果+号两边有任意一边是字符串,+号就是拼接

            如果字符串数字通过在前面添加一个+号,将这个字符串数字转换成真正的数字

        2.  %:取余,求模 - 求余数

        3.  -  *  /

    三.关系运算符

        1.>  >=  <  <=

        2. ==  ===  != !== 

            ==:比较的是值是否相等,和类型无关,具有隐式转换(符号自动实现),最终转换的结果一定是数字

            null和undefined相等的,系统约定的

        3. !=:值不相等

        4. ===:全等或者恒等,比较的是值和类型都要相等

        5. !==:不全等或者不恒等

        面试:== 和 ===的区别

            ==比较的是值是否相等,和类型无关. ===全等或者恒等,比较的是值和类型都要相等

            ==具有隐式转换,===没有

显式转换:强制转换,通过系统的函数(方法)进行转换

    一、系统下面提供了三个函数(方法)进行强制转换  -  Number  /  String  /  Boolean。

        1、Number():括号里面的值转换成数字,包括字符串数字,如果不能转换输出NaN

        2、String():括号里面的值强制转换成字符串

        3、Boolean():将括号里面的值强制转换成布尔值

            规律:数字非0即真    字符串非空即真    undefined  null都是假(false)

    二、window下面提供两个方法  -  parseInt()  parseFloat()转换

        1、parseInt():将括号里面的字符串转换成整数,从第一个字符为数字开始,碰到非数字结束。如果第一个字符都不是数字,输出NaN

        parseInt括号里面可以放置两个值,第一个值:字符串  第二个值:进制值(二进制,八进制,十进制,十六进制)

        2、parseFloat():和parseInt类似,不过可以获取字符串存在的小数,没有第二个值

        3、其他方法

            toFixed():数字下面的方法,保留对应的小数位数,参数就是保留的小数位数

            采用银行家算法。

            【银行家算法】是一个避免死锁(Deadlock)的著名算法,是由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计的一种避免死锁产生的算法。它以银行借贷系统的分配策略为基础,判断并保证系统的安全运行。

            isNaN():检测括号里面的值是否是一个数字,不是一个数字输出true

            隐式转换:系统自动根据当前的符号进行转换。+ - * /  %  ==  ++  --  !  ......

逻辑运算符:&&与    ||或    !非

    一、逻辑与(&&)

        1.逻辑与(&&)操作可以应用于任何类型的操作数,而不仅仅是布尔值。

        2.在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值。

        3.逻辑与操作属于短路操作,即如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值。

        过程1:如果第一个操作数为真,继续后续的操作数,结果就是第一个不为真的值,或者最后一个为真的值。

        过程2:如果第一个操作数为假,结果就是第一个操作数的值,包括第二个操作数在内的直接跳过。(短路操作:不执行后续操作)

    二、逻辑或(||)

        逻辑或(||)和逻辑与操作相似,如果有一个操作数不是布尔值,逻辑或结果也不一定返回布尔值

        逻辑或操作符也是短路操作符。也就是说,如果第一个操作数的求值结果为true ,就不会对第二个操作数求值了。

        过程1:如果第一个操作数为真,结果就是第一个操作数的值,后续跳过(短路)

        过程2:如果第一个操作数为假,后续操作如果是真,返回当前值,如果是假继续执行,输出最后的结果。

    

    总结:逻辑与不要碰到假,逻辑或不要碰到真

    三、逻辑非(!)

        结果一定是布尔值,取反

一元运算符

    只能操作一个值的操作符叫做一元操作符,是ECMAscript中最简单的操作符

    1、前置型应该位于操作的变量之前,先将操作数+1或者-1,再参与运算

    2、后置运算符应该位于要操作的变量之后,先参与运算后,自身再+1或者-1

其他内容

    1、计算小数

        小数相加出现误差

        解决方式:扩大值方式

    2、比较问题(数字、字符串、中文)

        Unicode编码:全世界的每一个符号都对应一个数字

        localeCompare(目标字符串)字符串的方法,本地字符串的方式进行比较

        0    相等的情况

        1    当前的字符串>目标字符串

        -1    当前的字符串<目标字符串

猜你喜欢

转载自blog.csdn.net/qq_39264561/article/details/106793509