Javascript的基本数据类型及对应的方法
JavaScript
是一门轻量级的弱脚本
编程语言
JS组成部分
ECMAscript
: js的核心语法DOM
: Document Object Model(文档对象模型,提供属性和方法操作页面元素)BOM
: Browser Object Model(浏览器对象模型,提供属性和方法操作浏览器的)
JS引入的几种方式
- 行内(必须是事件属性)
<div class="box" onclick="console.log(123)"></div>
- 内嵌
<script>
let obj = {
name:'wjc',
hobby:'ball',
sex:'man'
}
let aa = Object.keys(obj); //遍历obj的所有属性名,以数组形式展现
console.log(aa);
for(var i in obj) {
console.log(i);
}
</script>
- 外链
<script src="./js第一天.js"></script>
调试的方式
console.log()
控制台alert()
弹框
变量
代表的是一个值的容器或者代名词,并且这个值是可变的容器,或者代名词
声明
- var 声明一个变量
- function 声明一个函数
- const 声明一个常量 (ES6语法)
- let 声明一个变量(ES6语法)
- class 类(ES的类)
- import (基于ES6的模块导入)
JS的命名规范
+ 不能以数字开头
+ 不能是关键字,或保留字
+ > 不能是`var,let class,for,if,function,new`等等
+ 区分大小写
+ 名字的组成: 数字,字母,下划线,$符
+起名字要有语义化,可以遵循:
+ > 小驼峰命名: var studentScore = 100;
+ > 大驼峰命名: var StudentScore = 100;
+ > 下划线: var student_score = 100;
JS的数据类型
- 基本数据类型
- number 数字类型
- 特殊: NaN //not a number
检测NaN: ===;isNaN()
- 特殊: NaN //not a number
Number(undefined)//NaN
Number(null)//0
Number({name:''})//会先调用toString这个方法,然后转化为[object object],在转化成NaN
// *只要是对象,都会调用toString()方法
// 关于number的转换规律:
如果参数是字符串:
- 里面全是数字=>数字
- 包含了非有效数字=>NaN
- 空字符串=>0
布尔
- true=>1
- false=>0
null=>0
undefined=>NaN
//引用数字类型:
会先隐式调用toString()方法,把他转换成"[Object Object]"==>再接着进行转换
- string 字符串
把字符用单引号或双引号包起来的就是字符串
- null 空
代表无,表示的是一个空指针,空对象 - undefined
声明未赋值,就是undefined
- Symbol 唯一值(ES6语法)
一般用于给对象设置属性名的
Symbol(1)==Symbol(1) //false - bigInt
//计算机有一个数值最大安全范围和最小安全范围:
let max = Number.MAX_SAFE_INTEGER; //9007199254740991
let min = Number.MIN_SAFE_INTEGER; //-9007199254740991
console.log(max,min);
let my_bigint = 9007199254740999n;//大于max,再在后面跟一个n,则将其转换为bigInt类型
console.log(typeof my_bigint); //"bigInt"
- boolean 布尔类型
true 或 false
- 引用数据类型
- 对象
- 普通对象类型
- 数组
- 正则
用于校验规则
- Date 日期
- Math对象
- 函数
Number()方法
console.log(Number(null));//0
console.log(Number(undefined));//NaN
console.log(Number({}));//NaN
console.log(Number({name:""}));//NaN
console.log(Number([]));//0
console.log(Number([1]));//1
console.log(Number([1,2]));//NaN
console.log(Number({"1":1}));//NaN
console.log(Number("0"));//0
console.log(Number(true));//1
console.log(Number(NaN));//NaN
console.log(Number(12.500001));//12.500001
console.log(Number("12.5.1"));//NaN
console.log(Number("12.5px"));//NaN
parseInt()方法
parseInt('12.5px');//12
parseInt('12.5');//12
parseInt('w12.5');//NaN
console.log(parseInt(NaN));;//NaN
parseInt("字符串","进制");
// 例如:
parseInt("123",2)//把"123"转换成二进制
parseFloat方法
parseFloat('12.5.6px')//12.5
parseFloat('w12.5.6px')//NaN
console.log(parseFloat(NaN));;//NaN
NaN
//关于NaN
// 连自己都不相等
console.log(NaN===NaN);//false
// 判断方法: 调用isNaN()方法
console.log(isNaN('12px'));//true 隐式调用Number()方法,转换之后是非有效数字,所以是true
console.log(isNaN(NaN));//true
console.log(isNaN('12'));//false
console.log(isNaN(0));//false
console.log(isNaN(12));//false
console.log(isNaN(""));//false,隐私调用Number()方法,将空字符串转为0,所以是false
console.log(isNaN([]));//false,隐私调用toString()方法,将空对象(数组)转为"",所以是false
console.log(isNaN(true));//false 有隐式调用Number()方法,转换成数字类型再进行判断
console.log(isNaN(null));//false
console.log(isNaN([1]));//false
console.log(isNaN([1,2]));//true
console.log(isNaN({}));//true,对象会调用toString()方法,然后将其转换成[Object Object],这是一个字符串,所以包含非有效数字,所以是true
console.log(isNaN(undefined));//true,先会调用Number()方法,转为NaN,所以isNaN(NaN)是true;
// isNaN()检测非有效数字的时候,返回就是true,否则返回false
字符串String
//关于字符串String
+ 索引: 每个字符对应的都有一个下标,索引是从0开始的,依次增加;
+ 长度: str.length
+ 最后一个字符的索引: str.length-1
+ 获取最后一个字符: str[str.length-1]
//四则运算:
+ 加法: 如果遇到有字符串,就变成了字符串拼接,如果是引用数据类型,会隐式调用Number这个方法,因为是引用数据类型,所以会隐式调用toString这个方法,调完之后还没来得及转Number()方法,就直接进行了拼接(引用数据类型调用toString()进行拼接);
例子: "2" + {};// 2[Object Object];
+ 减法,乘法,除法 都是调用Number()再进行计算;
"2"/2;//1
"2"*2;//4
"2"-2;//0
"2"-{};//NaN
"2"/2;//1
boolean布尔
//boolean布尔类型
Boolean();//括号里面填写需要转换的值
! 转换为布尔类型,再取反;
布尔的规律:
如果是以下的几个值,转为布尔的时候都是false:
+ Boolean(0);
+ Boolean("");
+ Boolean(null);
+ Boolean(undefined);
+ Boolean(NaN);
//剩下的所有都是true
Boolean({})//true
Boolean("0")//true
Boolean([0])//true
Boolean([])//true
null与undefined
//关于null和undefined的区别
+ undefined 表示声明了,但是未定义;
+ null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN;
+ null是一个空的对象指针;
+ null可以释放堆内存;