哪有时间学JavaScript ②数据类型、强制类型转换、运算符

一 JavaScript常量、变量

一 基本组成结构

1.1 常量(字面量)

常量是一些不可改变的值:1、2、3、true、false、null、NaN、“hello”,

1.2 变量

变量可以用来保存字面量,变量的值是可以改变的,实际开发往往用变量来表示字面量
变量的声明和赋值: 使用var关键字声明一个变量;使用=为变量赋值。

var a;
a = 1;
var b = 2;

1.1 关键字和保留字符

关键字是预先规定的具有固定功能和意义的英语单词或单词的缩写,用户只能按预先规定的含义来使用它们,不可以自行改变其含义。

保留字符是暂时未规定但未来会用到的字符(部分已规定),同样不可以自行改变其含义。
关键字和保留字符
③其他不建议使用的字符其他不建议使用的字符

1.2 标识符

1.2.1 标识符定义

JS中所有可以被自主命名的都称作标识符
如:变量、函数、属性等。

1.2.2 标识符命名规则

标识符由字母、下划线、美元符号或数字组成,第一个字符不能是数字;

②ECMAScript 标识符采用驼峰命名法:即大写字母标记逻辑断点,如mathGrades

标识符不能是关键字和保留字符。
④JS底层保存标识符用的是Unicode

1.3 数据类型

JavaScript中一共有5种基本数据类型:

  • 字符串型(String)
  • 数值型(Number)
  • 布尔型(Boolean)
  • null型(Null)
  • 未定义型(Undefined)

另外还有1种引用数据类型

  • 对象型(Object)

1.3.1 字符串型(String)

字符串型(String)用双引号或者单引号表示。

引号不能嵌套,但可以双引号里放单引号、单引号里放双引号。

var a="yanqiu"
var a='yanqiu'

由于 JavaScript 已经赋予了双引号为字符串直接量的标识符,如果在字符串中包含双引号,就必须使用转义字符(Escape Character)来表示,例如:\n表示换行符,\a表示响铃符,\t表示制表符等。

在这里插入图片描述

当对字符串进行错误运算时(如“123”*“123”),返回NAN,即not a number,属于数值型

1.3.2 数值型(Number)

JS中,所有的数值(整数、浮点数)都是数值型(Number)

注意:123 是数值型 "123" 是字符串型。我们可以通过运算符typeof检查一个变量的数据类型

  • 可以通过Number.MAX_VALUE得到JS数值型最大值、最小值1.7976931348623157e+308和-1.7976931348623157e+308;如果超出最大值、最小值则会返回Infinity(正无穷)和-Infinity(负无穷),属于数值型;
  • 可以通过Number.MIN_VALUE得到最大精度5e-324;如果超出最大精度则会返回0。
  • 另外,JS在浮点数计算时同样会得到不够精确的结果
<script>
    console.log(Number.MAX_VALUE)
</script>

二进制:0b 开头表示二进制,但是,并不是所有的浏览器都支持
八进制:0 开头表示八进制
十六进制:0x 开头表示十六进制

输出时不同浏览器转换为不同进制,可以在使用时加上,10``,8来区分

1.3.3 布尔型(Boolean)

布尔型(Boolean)是逻辑判断结果

  • true
  • false

1.3.4 null型(Null)

null型(Null)只有一个值:null。

null型专门用来表示空对象,所以用typeof检查会返回object

1.3.5 未定义型(Undefined)

当声明变量但未赋值时,它的值就是undefined

undefinedtypeof检查会返回undefined。
undefined值实际上是由null值衍生出来的,所以如果比较undefined和null是否相等,会返回true。

1.3.6 对象型(Object)

二 强制类型转换

强制类型转换指将一个数据类型强行转换为其他数据类型

2.1 转换为String类型

2.1.1 调用toString()方法

格式:变量名.toString()
该方法不会改变原变量的数据类型,只将改变后的结果返回。

<script>
    var a=123;
    var a=a.toString();
</script>

null和undefined这两个值没有toString()方法,如果调用它们的方法,会报错。

2.1.2 toString函数

格式:toString(变量名)
该方法将被转换的数据作为参数传递给函数

<script>
    var a=123;
    var a=toString(a);
</script>

toString函数可以对null和undefined转换
使用String()函数做强制类型转换时,对于Number和Boolean实际上就是调用的toString()方法,但是对于null和undefined,就不会调用toString()方法,它会将 null 直接转换为 “null”,将 undefined 直接转换为 “undefined”。

2.2 转换为number类型

2.2.1 Number函数

格式:Number(变量名)

<script>
        var a="123"
        a=Number(a);
        console.log(a);
</script>

如果变量中含有非数字字符或者Undefined型,则返回NAN;


如果字符串无内容或纯空格,则返回0;


Boolean型true转为1,false转为0;

2.2.2 Parse

这种方式专门用来对付字符串,函数方法无法提取出非纯数字字符串中的数字,对于这种情况我们可以使用Parse
ParseInt可以转化为整数;(遇非数字停,可以利用它取整)
ParesFloat可以转化为小数;

<script>
    var a="123abc"
    a=parseFloat(a);
    console.log(a);   //输出123
</script>

如果对非String使用parseInt()或parseFloat(),它会先将其转换为String然后在操作

2.3 转换为Boolean

2.3.1 Boolean()函数

将其它的数据类型转换为Boolean,只能使用Boolean()函数
格式:Boolean(变量名)

数字 —> 布尔
除了0和NaN,其余的都是true

字符串 —> 布尔
除了空串,其余的都是true


对象转换为true

nullundefined都会转换为false

2.4 隐式类型转换

为任意数据类型做两次非运算,转换为Boolean值

三 运算符

运算符也叫操作符,可以对操作对象进行运算

3.1 算术运算符

算术(Arithmetic)运算包括加、减、乘、除、求余、取负数等,分别使用运算符+-*/%-来表示

+运算符表示加时,任意数据类型的数据与字符串运算时的时候,那个+号就是连接符转化为String型(可以用+“”的方式转化为String型

-*/%则任意数据类型的数据与Number型运算时,都会转换为Number型再进行运算(可以用-“”的方式转化为Number型

任何数值与NaN运算都会返回NaN

+-表示正负时,会先将操作对象转为Number型,然后再进行运算

JavaScript中的/不分整数除、小数除

3.2 自增、自减运算符

变量自增(Increment)运算符++自减(Decrement)运算符--,其作用是使被操作的变量的值增加1或减少1。既可以放在变量的前面,称为前++(Prefix Increment)和前- -(Prefix Decrement);也可以放在变量的后面,称为后++(Postix Increment)和后–(Postix Decrement)结果不同。

3.3 逻辑运算符

逻辑运算符用于测定变量或值之间的逻辑。
①&& 与:JS中的“与”属于短路的与,如果第一个值为false,则不会检查第二个值
非布尔值时:如果两个都为true,则返回第二个值。

②|| 或::JS中的“或”属于短路的或,如果第一个值为true,则不会检查第二个值
非布尔值时:如果两个都为false ,则返回第二个值。

③! 非:!可以用来对一个值进行非运算,所谓非运算就是对一个布尔值进行取反操作,truefalsefalsetrue
非布尔值时:先会将其转换为布尔值,然后再取反,所以我们可以利用该特点,来将一个其它的数据类型转换为布尔值,可以为一个任意数据类型取两次反,来将其转换为布尔值,原理和Boolean()函数一样

3.4 赋值运算符

赋值(Assignment)运算符的功能是将一个表达式的值赋给一个变量,赋值运算符用=号表示。
还提供另一种形式的赋值运算符,称为复合赋值(Combined Assignment)运算符。它由双目运算符与双目赋值运算符一起构成。

3.5 关系运算符

关系(Relational)运算是用来比较两个操作数的值的运算,比较的结果是一个Boolean值,即只能是“真”或“假”。若比较条件得到满足,则结果为真;否则,结果为假。关系运算共6种,包括:小于、小于或等于、大于、大于或等于、等于、不等于、全等,分别使用运算符<>>===!====!==

对于非数值参与运算时,会把非数值转化为数值进行比较
任何值和NaN比较都是false,包括它本身,判断是否是NaN用isNaN()函数
特例:undefined和null!=0但他俩相等
当两侧都是字符串时,比较第一位Unicode编码,如果一样,则比较下一位,所以比较两个字符串型数字时,一定记得转型

对于===!==,不会做自动类型转换,所以是用来判断一样不一样(包括格式)
null !==undefined

3.6 条件运算符

条件(Conditional)运算符用于进行简单的条件判断,它由两个符号?:组成。

3.7 逗号运算符

逗号(Comma)运算符,是最简单的运算符了,它本身没有具体的计算功能,仅仅是将多个表达式连接在一起。

3.8 运算符的优先级

运算符的优先级

如何用Unicode编码输出字符

格式:在字符串中使用转义字符'\u+编码'
在网页中则是&#+编码;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值