JS数据类型

###NaN:(not a number)属于数字类型
NaN和任何值(包括自己)都不相等,不能用相等的方式判断是否为有效数字
isNaN检测一个值是否为非有效数字,不是返回true,是返回false
//isNaN([val])
在使用isNaN检测的时候,首先会验证检测的是是否为数字类型,如果不是,先基于Number()这个方法,把值转换为数字类型,然后在检测

parseInt/parseFloat([val],[进制]):也是转换为数字的方法,对于字符串来说,它是从左到右一次查找有效数字字符,知道遇到非有效数字字符,停止查找(不管后面是否还有数字,都比在找了),把找到的当坐数字返回

console.log(Number(‘12.5’)); //12.5
console.log(Number(‘12.5px’)); //NaN
console.log(Number(‘12.5.5’)); //NaN
console.log(Number(’’)); //0
console.log(parseFloat(‘width12.5px’)); //NaN
bool值转换number类型
console.log(Number(true)); //1
console.log(Number(false)); //0

###所有用 ‘’,"",反引号(撇ES6模板字符串)包起来的的都是字符串

其他类型转换为字符串
[val].toString()
null和undefined是禁止直接toString的
(null).toString() //报错
但是和undefined一样转换为字符串的结果就是’null’/‘undefined’
普通对象.toString()的结果是 “[object Object]” =>?
=>Object.prototype.toString方法不是转换为字符串的,而是用来检测数据类型的

字符串拼接
let a = 10 + null + true + [] + undefined + ‘字符’ + null + [] + 10 + false;
console.log(a);

10 + 0 + ‘’ + 1 + undefined +‘字符’ + null + 10 + false
‘11undefined字符null10false’
注意:空数组变为数字,先要经历变为空字符串,遇到字符串直接变为字符串拼接

###boolean布尔数据类型
true/false
把其它类型值转换为布尔类型

只有0,NaN,’’,null,undefined五个值转换为false,其余都转换为true
-Boolean([val])
-!/!!
-条件判断

! :取反(先专为布尔,然后取反)
!! :取反再取反,相当于转换为布尔 <==>Boolean

###null/undefined
都代表没有
null:是意料之中一般都是开始不知道值,我们手动先设置为null,后期在赋值
undefined:意料之外(不是我能决定的)
let num; //创建一个变量没有赋值,默认值是undefined

###object对象数据类型-普通对象
{[key]:[value],…}任何一个对象都是有0到多组键值对组成的(属性名不能重复)
let person = {
name:‘杨坤’,
age:‘23’,
height:‘172cm’,
weight:‘60kg’,
1:100
};

获取属性名对应的属性值
//对象.属性名
//对象.[属性名] 属性名是数字或者字符串格式的
//如果当前属性名不存在,默认的属性值是undefined
//如果属性名是数字,则不能使用点的方式获取属性值

console.log(person.name);
console.log(person[‘name’])
console.log(person.sex); //undefined
console.log(person[1]) //100
console.log(person.1); //SyntaxError语法错误

设置属性名属性值
属性名不能重复,如果属性名存在则属于修改
person.sex = ‘男’;

删除属性
真删除:把属性彻底删掉
delete person[1];
假删除:属性还在,值为空
person.weight = null;

数组是特殊的对象类型
1.我们在[]中设置的是属性值,他的属性名是默认生成的数字,从0开始递增,数字代表每一项的位置,我们把其称为“索引”=>从0开始,连续递增,代表每一项位置的数字属性名
2.默认一个属性名length,存储数组的长度

let ary = [11,‘uu’,true,14];
console.log(ary.length);
console.log(ary[‘length’]);

###JS中的数据类型检测
-typeof [val]:用来检测数据类型的运算符
-instanceof:用来检测当前实例是否属于某个类
-constructor:基于构造函数检测数据类型(也是基于类的方式)
-Object.prototype.toString.call():检测数据类型最好的方法

1.基于typepof检测出来的结果:1.首先是一个字符串,2.字符串中包含对应的类型
局限性:
typeof null //“object”,但是null不是对象
基于typeof无法细分出当前值是普通对象还是数组对象,因为只要是对象数据类型,返回的结果都是"object"

###JS中的操作语句:判断、循环

判断
if else
三元运算
switch case:
每一种case情况的比较用的都是===
switch(a){
case 1:
console.log(‘一’);
break;
case 2:
console.log(‘二’);
break;
default:
console.log(‘三’);
}

循环
for
for in
for of(es6新增)
while
do while

for(var 变量 in 对象){
//获取属性值:obj[属性名]
//对象中有多少个键值对,就循环几次,除非break
//for in在遍历的时候,有限循环数字属性名(从小到大)
}

id:操作元素的ID值

className:操作元素的CLASS样式类的值
innerhtml:操作元素的内容(可以识别标签):
    //document.getElementById("p1").innerHTML="New text!";
innerText:和innerHTML的区别是不能识别标签
appendChild():
    //document.getElementById('div').appendChile(para)
tagName:获取元素的标签名(一般大写)
style:操作元素的行内样式,属性值是一个新的对象(CSSStyleDeclaration)

##控制台输出:
//console.dir(console)

console.log()
console.dir(document.body) //dir输出一个对象的详细简直对信息
console.table() //把一个多为JSON数组在控制台按照表格的方式呈现出来

##浏览器窗口弹窗:
**三种方式输出的结果都必须先经过toString转换为字符串,对象类型输出object
**会阻断当前代码执行
alert()
confirm() //选择型弹窗,确定和取消
prompt() //confirm基础上多了一个输入框(写出原因)

##document.write 在页面中写入信息,输出的结果是字符串

SyntaxError:语法错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值