JS中的数据类型
JS中的6种数据类型 字符串(string),数值(number)布尔值(boolean),null ,undefined,symbol
一。字符串
①长字符串换行时需要加 \ 否则会报错,也可以使用'+'号。eg(var a="xxx"+"xx")
②字符串可以视为字符数组 可以使用数组的下标来取值 eg(var a="hello" a[2]="l"),
但是并不能改变length的长度。
③JS使用Unicode字符集,字符长度都是16位(2个字节)。
④转义
二。数值
①js底层中没有整数,涉及到小数操作经常会出错。
②数值的科学计算法,(123e3=123000)(123e-3=0.123)
③NAN是数值的一种特殊值,经常出现在将字符串转换为数字时出错的场合。
④NAN和任何数的运算都是NAN(+-*/=)
⑤转换为数字 number parseint parsefloat
number(): 任何不能转换为数字的值 //nan , ''.和null //0 , object ,undefined //nan。
paeseint():用于将字符串转换为整数
1.如果字符串中的第一个字符不能转换为数字则返回NAN(除+ -)。
2.parseint转换结果和number不一样
paeseint(true) //nan
number(true) //1
parseint('123ys') //123
number(123ys); //nan
paeseint(1.2344) //1
parsefloat(1.2344)//1.2344
⑥isNan()用来判断一个值是不是nan 如果是返回true 否返回false
isNan("shshss") //true,当他的值为字符串的时候也会返回true
当isNan()传入其他值(除数值外)都会将他的值转换为数值类型,当装换为数值类型时会返回NAN (number("bbbbb")-----nan -------isnan(nan)),然后再经过isnan(nan)---(true),由于同样的原因对象,数组,一样返回true,但是对于空数组和有一个值的数组则返回false.
三。null ,undefined boolean
①null和undefined语法几乎没有区别, null==undefined
ull用来表示一个为空的对象
undefined 表示一个此处无定义的初始值
②返回undefined的几种情况,1声明未赋值
2调用函数时没有提供参数 eg(functiong com(a){return a} com() //undefined)
3函数没有返回值,eg(function c(){a+b} c() //undefined)
4对象没有赋值的属性 eg(var a=new object() a.p //undefined)
③boolean有两个值true和false
④bollean() 以下值会自动转换为false。undefined ,null ,"",nan,+0/-0,false外其他值都为true
⑤空数组和空对象返回的都是true
四。Object对象
①对象时js语言的核心概念,也是最重要的数据类型。
②对象一组键值对的集合,是一种无序的复合数据类型(集合中可以包含多种不同的类型)。
eg(va a={a:true;b:1;c:'string'})
③var a(变量)={a(属性/键名):"1"(值),c:"string"}
④键名的第一个值为数字,或者含有空格,运算符如果不加上双引号(''),会提示错误。
⑤对象的属性可以动态创建,不必再对象声明时就指定
⑥对象的引用,如果不同的变量名指向同一个变量(他们就是这个变量的引用),如果对单一变量赋值会影响 到其他变量,取消单一变量不会影响到其他变量。
4.2属性的操作
4.2.1属性的读取:点方法和方括号方法
①方括号运算符,键名必须放在引号里面,否则会被当做变量处理。 eg(var foo=‘bar’ var obj={foo:'1',bar:'2'} obj.foo //1 obj[foo] //2)
②数字键名不能使用点运算符,只能使用方括号。
4.2.2属性的赋值 js可以在任意时刻新增属性,没必要在声明的时候就定义 赋值 eg(var obj={} obj.foo=true; obj['foo']=true;) 新增eg(var obj={a:"string"} obj.c="12345")
4.2.3属性的查看 查看一个对象的所有属性的方法,可以使用Object.keys(对象名) 只返回key的值 var a={ "0p":"string ",a:"4342"} object.keys(变量名); //key1 key2
4.2.4属性的删除 delect命令用于删除对象的属性,删除成功后返回true。只有一种情况下会返回false(该属性存在但是 不能被删除) 语法( va obj={p:1} 查看Object.keys(obj); 删除delect .对象名.属性)
4.2.5判断属性是否存在(in运算符) ①in运算符用于检查对象是否包含某个属性(键名)如果有就返回true 否则返回false eg(var hello={a:123,b:"string"} a in hello //true) 语法a in hello // in 左侧的值需为字符串 ②in 运算符无法判断属性是本身的还是继承。 ③还可以用hasOwnPropertry方法判断是否为对象自身属性 var obj={"p":"hello world"} console.log( 对象名.hasOwnProPertry(属性名))。
4.3属性的遍历(for .....in 循环) ①for.....in 循环用来遍历一个对象的全部属性,他不仅用来遍历本身的属性还遍历继承的属性。 ②他遍历的都是对象的可遍历属性,会跳过不可以遍历属性。△不会遍历tostring这个属性 var a = { a:"1","1":"string "} for(var i in a){ console.log('键名':i);console.log('键名':a[i])} ③如果只需要遍历对象本身,可以结合hasOwnProPrety()来使用 eg(var a={'a':1,'rde':'ssss'} for(var s in a){ if(obj.hasOwnProperty(属性名)){console.log(key)})})