【重学JS】-1,数据类型

158 阅读6分钟

这是我参与2022首次更文挑战的第1天,活动详情查看:链接

一,字面量和标识符

1. 字面量

字面量都是一些不可改变的值。

字面量都是可以直接使用的,但是我们一般不会直接使用字面量,

变量:变量可以用来保存字面量,如x = 1 x我们称为变量,1 则是字面量。而且变量的值是可以任意改变的。

变量更加方便我们使用,所以在开发中都是通过变量去保存一个字面量,而且很少直接使用字面量。

#声明变量:在js中使用var(新的es6中也有使用let) 关键字来声明一个变量。

例:var a = 123;、

2. 标识符

在js中所有的可以由我们自主命名的,都可以称为标识符。

-例如:变量名,函数名,属性名都属于标识符

-命名一个标识符的时候要遵循如下规则:

-1,标识符中可以含有字母,数字,_ , $

-2,标识符不能以数字开头

-3,标识符不能是es中的关键字或者保留字,如 var var = 123 //报错 更多关键字和保留字请查看文档

-4,标识符一般都采用驼峰命名法,首字母小写,每个单词的开头字母大写,其余字母小写 // 如 myClass

JavaScript底层保存标识符时,实际上是采用Unicode 编码,所以理论上讲,所有utf-8中含有的内容,都可以作为标识符。

如: var 长度 = 22;//中文也可以作为变量名,但是不建议使用中文定义。

二,字符串

数据类型指的就是字面量的类型,在JavaScript中一共有六种数据类型,分别是:

String(字符串),

Number(数值),

Boolean(布尔值),

Null(空值),

Undefined(未定义),

Object(对象)

其中 String,Number,Boolean,Null,Undefined 属于基本数据类型,

而Object属于引用数据类型。

在JavaScript中 使用String字符串需要使用引号引起来

例:var str = 'hello';

//如果不加引号 则为变量,前面有提到,访问str 会提示 hello 未定义

#使用双引号和单引号都可以,但是不要混着用。

#引号不能嵌套,双引号内不能放双引号,单引号内不能放单引号,

//如:var str = "我说:"你真好看!"";//会报错误

#在字符串中我们可以使用\ 作为转义字符, 当标识一些特殊符号时,可以使用 \ 进行转义

如://如:var str = "我说:"你真好看!"";//不会报错

\n 表示换行,\t 制表符,\ 表示 \。

三,Number(数值)

在JavaScript中,所有的数值都是Number类型,包括整数和浮点数(小数)

例:

var a = 123
a = 0.123

//字符串123
var b = '123'

可以使用 typeof 运算符来检查一个变量的类型

语法:typeof 变量

console.log(typeof a) //number
console.log(typeof b) //string

#typeof() 可以加括号 也可以不加

#js中可以使用 Number.MAX_VALUE 表示数字的最大值,如果使用Number表示的数字超过最大值,则会返回一个Infinity(正无穷)

Number.MIN_VALUE 表示大于0的最小值

#使用typeof 检查 infinity 返回 number。

#NaN 表示一个特殊数字,表示 Not A Number ,非数字。typeof 检查 nan 也会返回 number

如果使用JS进行浮点计算,可能得到一个不精确的结果

如:var c = 0.1+0.2 // 0.300000000004

所以千万不要使用JS进行对精确度要求较高的运算

四,布尔值(boolean)

布尔值只有两个,就是true(表示真)和flse (表示假); 布尔值主要做逻辑判断;

使用typeof 来检查一个布尔值,会返回boolean

var bool = true

五,Null和Undefined

null的值只有一个,就是null。

var a  = null

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

使用typeof检查null时,会返回 object。

undefined的类型只有一个,就是undefined

当声明一个变量但是不给变量赋值时,他的值就是undefined

var a; 
console.log(a) //undefined

使用typeof检查一个undefined,返回undefined

五,强制类型转换

强制类型转换是指将一个数据类型转换为其他数据类型,比如,将number 转为 string

类型转换主要指,将其他数据类型转换为 String,Number ,Boolean

1. 将其他的数据类型转换成String

-方式一:调用被转换数据类型的toString() 方法

该方法不会影响原变量,他会将转换的结果返回

Null和Undefined类型没有toString方法,调用报错

-方式二:调用String()函数, 并将被转换的数据作为参数传递给函数

使用String()函数,对于Number和Boolean实际上就是调用toSring()方法,

但是对于null和undefined,就不会调用toString()方法

会将null转为'null',undefined转为'undefined'

//toString
var a = 123
var b = a.toString()

console.log(typeof b) //string

//String()
var a  = 123
a  = String(a)
console.log(typeof a) //string

var b = null
b = String(b) // 'null'

2. 将其他数据类型转换为Number

-方式一:使用Number()函数

1,字符串-->数字

如果是纯数字的字符串,则直接转换成数字,

如果字符串中有非数字内容,则转换为NaN

如果字符串是一个空串,或者是一个全是空格的字符,则转换为0

2,布尔 --> 数字

true - 1, flase ->0

3,Null -> 数字 == 0

4,Undefined ->数字 ==NaN

使用Number函数转换时,当字符串中有除纯数字之外的内容,转换结果都是 NaN

-方式二:

1,parseInt() 把一个字符串转换成一个整数

使用parseInt()可以将一个字符串中有效的整数取出来,然后转换为number,从左往右看,当遇到非纯数字时,直接结束返回结果,

当开头是非纯数字时,返回NaN

2,parseFloat() 把一个字符串转换为一个浮点数

作用跟parseInt()类似,不同的是他可以获得有效的小数

如果 对非String使用parseInt和parseFloat,他会先将其转换为String,然后在操作

//方式一: Number()
var a = '123'
a = Number(a)
console.log(typeof a) //number

var b = 'abc' //
b= Number(b) //NaN

var c = true
c = Number(c) //1  -->flase == 0

var d = '123xu'
d = Number(d) // NaN

//方式二:
var a = '123px'
a = parseInt(a) //123 typeof a == number

var b = '123ab123'
b = parseInt(b) //123 typeof b == number

var c = '123.233'
c = parseInt(c) //123 typeof c == number

var d = 'a123.233'
d = parseInt(d) //NaN


var e = '123.345pxxx'
e = parseFol(e) //123.345
var f = '123.345.222pxxx'
f = parseFol(f) //123.345

3. 其他进制的数字

在JavaScript中,如果需要表示16进制的数字,则需要0x开头

var a = 0x10

如果需要表示8进制数字,需要以0 开头

var a = 010

如果需要表示2进制的数字,需要使用0b开头,但是不是所有浏览器都支持

var a =  0b12

有的时候,需要对特殊字符串进行转换数值时, 如 ‘080’使用parseInt(),有些浏览器会当成8进制去解析,有些会当成10进制

这个时候,我们可以在parseInt()中传递第二个参数,来指定数字的进制

var a = '080'
a = parseInt(a,10) //以10进制转换a

4. 将其他数据类型转换为Boolean

使用Boolean()函数,

1,数字-->布尔

除了0和NaN,其余都是true

2,字符串 -->布尔

除了字符串为空时,其余都是true

3,undefined和null -->布尔

都会转换为flase

4,对象都会转换为true

var a = 123
a = Boolean(a) // true