js笔记--数据类型及运算符

一、变量

1.声明标量

var\let用于声明标量,可以同时赋值

let声明的变量有块作用域

可以同时声明多个变量

let a,b,c

let a=100,b='asd',c=ture;

变量只有在第一次用的时候用声明

变量后面的赋值会覆盖前面的赋值

var a;//声明标量a
var b=25;//声明标量b的同时赋值

可以使用typeof函数来检查变量的类型

var a=123;
console.log(typeof a);//number
2.变量名称

2.1标识符中可以含有字母、数字、下划线和%,

2.2标识符不能以数字开头。

2.3标识符不能是js的关键字

关键字:break、case、catch、continue、default、delete、do、else、finally、for、function、if、in、instanceof、new、return、switch、this、throw、try、typeof、var、void、while、with
保留字:
boolean、byte、char、class、const、debugger、double、enum、export、extends、fimal、float、goto、implements、import、int、interface、long、mative、package、private、protected、public、short、static、super、synchronized、throws、transient、volatile

二、数据的类型

        js中的字面量有六种类型

        String              字符型

        Number           数值

        Boolean           布尔值

        Null                  空值

        Undefined        未定义

        object                对象

1.String        字符型

表示一串字符串,赋值时用英文双引号或者单引号

var a='我们'

\用来转义字符

\"表示"

\n表示换行

\t表示制表符

\\表示一个\

str="我说:\"我们的世界很精彩。\n我爱\t我们的世界\""  

模板字符串反引号``(波浪线那里),主要用法时可以嵌入变量

let a='山东';

let b=`我爱${a}`;//我爱山东

 2.Number        数值型

在JS中所有的数值都是Number类型的

        包括整数型和浮点型

var a=123;

进制:

a=0b1001//二进制

a=0o10//八进制

a=0x12//十六进制

Number的几种特殊形式

①能表示的最大值:NMax=Number.MAX_VALUE//1.7976931348623157e+308

        超过最大值的数为Infinity         Infinity也是Number型,表示无穷大

②能表示的最小正数 s=Number.MIN_VALUE//5e-324

 ③非数值 s='asd'*'jkd'//NaN        NaN也是Number型

2.5大整数

BigInt

数字的以n结尾,会保存为大整数类型,不取近似数

3.Boolean        布尔值

只有两种情况,true和false表示真和假,用来逻辑判断

4.Null        空值

Null的值只有一个就是null

null这个值专门用来表示一个为空的对象

用typeof来检查null值时,会返回object//那是不是说明null时是一个对象的状态???

5.undefined        未定义

undefined的值只有一个就是undefined

当我们声明一个标量并没有赋值时,就是undefined的状态

使用typeof检查时返回undefined

三、强制类型转换

1.转为string型
        ①调用被转换数据类型的toString()方法

        --该方法不会改变原变量,它会将结果返回,需要一个变量来接收。

        --数值型和布尔型会转成字符型

        --null和undefined没有toString()方法。

        var a=123;

        a=a.toString()//因为该方法不改变原值,所以需要重新赋值给a

        ②调用String()函数

        调用string()函数也是需要一个变量来接收返回值

        a = String(a);

        string()函数的底层时调用tostring()方法,当数值型、布尔型调用函数是调用的tostring()方法,当null和布尔值调用时直接返回字符型的null、undefined

        ③隐式转换

        将数据与空字符串相加,详细情况在4-1-3;       

a=true+'';//
console.log(typeof a,a)//string true
2.转为number型
        ①调用Number()函数

               1>字符串

                --纯数字的字符串,直接转换成number类型

                --如果有非数字的内容,则转为NAN。

                --空字符串会转成0;

                2>null转成0

                3>undefined转成NaN(非数字)

a = Number(a);
         ②parseInt()和parseFloat()

                专门用来转字符串的两个函数parseInt()转成整数和parseFloat()转成小数

parseInt()函数是从左向右依次读取,遇到第一个非数值停止。

let a='123.456山东';
a=parseInt(a);//123

parseFloat()函数同样从左向右读取数值,遇到第一个小数点继续读取

let a='123.456.562山东6789';
a=parseFloat(a);//123.456
        ③隐式转换

               a=+a;//将a转为数值型

3.转为boolean()布尔值
①字符串

        空值转为false

        其余是true

②数值

        0和NaN转为false

        其余是true

③null和undefined都是false
④隐式转换

        a=!!a;//将a转为布尔值

四、运算符

1.算数运算符
        ①基础用法

        +-*/等同于数学上的加减乘除

        a=1+2;        b=2-1;        c=4*5;        d=9/3;

        **幂运算:e=5**2;        //5的2次方25

        %取模(取余数)f=10%3;        //1

        ②非数值型数据用法

        在计算时js会自动进行类型转换,将非数值类型的数据自动转为数值型

        a=10+'5';//15,这里会将字符串‘5’自动转为数值5

        true==>1        false==>0        null==>0        undefined==>NaN,NaN进行算数运算会返回NaN

        ③字符串的加法

        字符串进行加法运算,会进行拼串处理

        利用js的这个特性可以进行隐式类型转换,将数据与空字符串相加,会直接将数据转换为字符串形式。

a='hello'+'world'//helloworld 
b=true+''//'true'
  2.赋值运算符        =

        将右边的值赋值给左边的变量;大部分的运算符不会改变变量的值,赋值运算符除外。

        a +=n        等价于a = a+n;

        a -=n        等价于a = a-n;

        a *=n        等价于a = a*n;

        a /=n        等价于a = a/n;

        a %=n        等价于a = a%n;

        ??=        空赋值

                a ??=b;        只有a是null或者undefined时,才会将b的值赋值给a;

3.一元运算符

        + 正号 不会改变数值的符号

        - 负号 对数值进行负号取反

        利用这一特性可以对数值进行隐式数据类型转换
       

let a='10';

a= +a;//a会从字符串格式变为数值型
4.自增和自减

        ++        --

        ++变量的值自增1。

        let a=10;

        b=a++;先赋值,再自增//b=10,a=11

        let a=10;

        b=++a;先自增,再赋值//b=11,a=11

        --        变量自减1,用法同自增

5.逻辑运算符

        !逻辑非

        &&逻辑与

        ||逻辑或

①!逻辑非

        --对布尔值进行取反

        如果时非布尔值,会先转换为布尔值再计算

        利用这一特性,可以对数值进行隐式转换

        let a='asda';

        a=!!a;//a=true

②&&逻辑与
        1>布尔值判断

        --两者同时为真时返回真,否则返回假

console.log(true&&true)//true
console.log(true&&false)//false
console.log(false&&true)//false
console.log(false&&false)//false
       2>非布尔值的判断

        对于非布尔值,会转成布尔值之后运算,返回值不再是true和false,而是参与运算的返回值。

        js的逻辑与是短路与,也就是第一项为真是,直接返回第二项的结果,第一项为假时,直接返回第一项的返回值,第二项不会执行。
 

10&&alert('1')//第一项为真,会执行第二项的代码,所以控制台会打印'10'
a=10&&null//第一项为真,返回第二项,a的值是null
b=undefined&&null//第一项为假,直接返回第一项,b的值是undefined
③||逻辑或
        1>布尔值判断

        两者同时为假时返回假,否则返回真      

console.log(true||true)//true
console.log(true||false)//true
console.log(false||true)//true
console.log(false||false)//false
        2>非布尔值判断

        对于非布尔值,会转成布尔值运算,返回值不再是true和false,而是参与运算的返回值

        js的逻辑非也是短路运算,也就是第一项为真直接返回第一项,不在执行第二项,第一项为假时,直接返回第二项。

a=10||alert('1')//第一项为真,直接返回第一项,所以a的值是10,第二项的代码不会执行
b=10||null//第一项为真,直接返回第一项,b的值是10
c=undefined||null//第一项为假,直接返回第二项,c的值是null
6.关系运算符

关系运算符用来检查两个值之间的关系是否成立,返回true或者false

>大于        <小于        >=大于等于        <=小于等于

遇到非数值类型的数据进行关系运算时,会先将其转换为数值,然后再比较。

a = 10>'5';//true

如果是两个字符串的数据进行关系运算时,会逐位比较Unicode编码

a='150'<'19';//true,因为两端都是字符串,会进行逐位比较编码,首位相同,左值第二位编码小于右值第二位的编码,所以返回true。与数学上的比较不同,需要注意

检查一个数是否在某个区间

let a=6;

b=a>5&&a<10;//返回true

7.相等运算符

        ==相等               ===全等        !=不相等        !==不全等

①==相等

       使用相等运算符比较两个不同类型的值时,会转换成相同的类型(通常是数值)

        NaN不和任何值相等,包括他自己

        null和undefined相等

let a = 10=='10';//true
a=1==2;//false
a = true=='1';//true
a= null==undefined//true
a= NaN==NaN//false,NaN不和任何值相等

②===全等

        全等运算符用来比较两个值是否全等

        如果类型不同直接返回false

a=10==='10';
null===undefined//false

③!=不等,

用来检查两个值是否不相等

会自动进行类型转换,相当于相等的取反。

④!==不全等,

用来检查两个值是否不全等

不会自动进行类型转换,相当于全等的取反。

8.条件运算符(三元运算符)

        结构:条件表达式?表达式1:表达式2

        条件运算符在执行时,先对条件表达式进行求值判断,如果true执行表达式1,false执行表达式2.

a>b?console.log('a大'):console.log("b大");//b大
let max=a>b?a:b;//会返回两个变量的最大值

9.优先级

        算式运算符先*/后+-

        &&优先于||

利用()括号能改变优先顺序

  • 19
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值