javascript 数据类型学习笔记
近期准备对js的基础知识进行回顾,首先了解了一下js的数据类型,在此总结一下:
一、标识符
标识符有自己的特性:
1、是具有特定含义的词
2、区分大小写
3、首字母可以是 _ A-Z a-z $ 之后还可以是数字
4、不可以使用关键字
js有一下几类标识符:
① var a = 12;
这是最简单的变量声明,而且我们还能这样写,不算错:
var 你 = 12;
自己可以试一下:
很明显打印出来是没有问题的,只不过我们很少这样用,也不推荐使用。
但是这样写就错了,首字母不能为数字:
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) // 值相等
可以看到===的情况下,两者是不相等的,因为两者类型不同,一个是纯数据类型,另一个是对象。