这是我参与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