近期准备对js的基础知识进行回顾,首先了解了一下js的数据类型,在此总结一下:


一、标识符

标识符有自己的特性:

1、是具有特定含义的词

2、区分大小写

3、首字母可以是 _ A-Z a-z $ 之后还可以是数字

4、不可以使用关键字


js有一下几类标识符:

① var a = 12;

这是最简单的变量声明,而且我们还能这样写,不算错:

var 你 = 12;

自己可以试一下:

WX20181026-161201@2x.png

很明显打印出来是没有问题的,只不过我们很少这样用,也不推荐使用。


但是这样写就错了,首字母不能为数字:

var 9a = 'abc';


② 形参,我们可以定义一个方法,函数里有形参name ,age 也是标识符。

function test(name,age){

}

③ 类名

class User{

}

User 是作为类名的标识符

④ 对象中的属性名

var obj = {
    name: 'dora',
    age: 18
}

对象 obj 中的属性name ,age 也是标识符。

PS: 在我们定义标识符的时候需要严格根据规则来,不符合规则的标识符运行会有问题。


二、变量

变量是对底层数据的引用,下面介绍三种:

① let ,引用可变,块级作用域, 只能在块类被访问到

② const  ,引用不可变

我们可以通过const申明一个变量:

const testme = 'doramart'
testme = 'doramart1'  // 这样会报错

这个都知道,但是这样呢?

const testme = {a:'123',b:'456'}
testme.b = '789';
console.log(testme); // 打印 {a:'123',b:'789'}

即 通过 const 申明对象,对象里面的属性是可以改变的。

③ var 函数级,可进行作用域提升,但是js执行是有顺序的,所以即使提升,但是可能不是正常的值。


三、数据类型

数据有以下几种类型

number, // 数字,包括整型和浮点型数字
string, // 字符串行,比较常用
boolean, // 布尔型 true/false
object, // 对象类型 可以执行的数据
null,  // 可以理解为未赋值的对象
undefined // 可以理解为未赋值的变量

着重对null 和 undefined 说明:

var obj = null; // 申明一个暂时没有赋值的对象
obj = {age: 20}
var testme; // 这个变量暂时没有赋值
console.log(testme); // 打印 undefined

同时,我们可以通过typeof 的方式获取到数据的类型:

> typeof "testme"
'string'
> typeof 15
'number'
> typeof false
'boolean'
> typeof undefined
'undefined'
> typeof {name:'leo'}
'object'
> typeof null
'object'
> typeof function(){}
'function'

类型是可以转换的,我们举个小栗子:

① undefined 转 boolean

var m;
if (m) {
console.log(m, '--true--')
} else {
console.log(m, '--false--')
}

// 输出:undefined '--false--'

我们把 undefined类型的m 通过()的形式转成 boolean 类型。


② string 转 number

我们可以通过构造器将 string 转 number:

console.log(Number('123'))  // 打印 123
console.log(new Number('123').valueOf())  // 打印 123
console.log(typeof Number('123'))  // 打印  number

还可以这样:

console.log(parseInt('33333'), parseFloat('33333')); // 33333,33333

console.log(Number(""), parseInt("")); // 0,NaN

console.log(Number(false), parseInt(false)); // 0,NaN

console.log(Number(null), parseInt(null)); // 0,NaN

console.log(Number(undefined), parseInt(undefined)); // 0,NaN

从上面可以看出 pareInt 或 parseFloat 只能对数字类型的字符串进行处理,其它情况不行。


③ number 转 string (隐式转换)

console.log(typeof ('' + 12345)); // string
console.log('12' + 12345); // 1212345


三、数据基础类型和对象类型。

数据的基础类型前面已经介绍了,表示的是纯粹的数据,而对象类型是object,是具备属性和方法的:

console.log();

console 为对象,具备 log 的方法。看下面这个:

var o = new Number(12); // 有类型的对象, Number
console.log(o === 12)  // 类型不相等
console.log(o == 12) // 值相等

可以看到===的情况下,两者是不相等的,因为两者类型不同,一个是纯数据类型,另一个是对象。