javascript数据类型及部分特性

5 篇文章 0 订阅
2 篇文章 0 订阅

javascript数据类型分为:

原始类型(基础数据类型)
引用数据类型(对象类型)

原始类型(基础数据类型):

boolean 布尔
true
false
undefined,null,0(包括+0,-0),NaN,false 使用Boolen( )为false

Undefined类型:
表示找不到,未定义
只有一个值undefined

Null类型 :
null 表示一个空的值
只有一个值null
有的人设变量时,会把null当做默认值或初始值,避免值为undefind

Number类型 数字类型:

NaN
NaN不是数据类型,是一个特殊值
特性:
NaN不等于自身
例如:
console.log( NaN===NaN); 返回false

正无穷 Infinity
最大值:Number.MAX_VALUE

负无穷 -Infinity
最小值:Number.MIN_VALUE

正常数字
123等

指数
长度为11个二进制位,意味着指数部分最大值为2047

数字的部分特性:

1.js内部,所有数字都是以64位浮点形式储存,即便整数也是如此。js底层没有整数,只有小数,所以运算不够精确。

例如:
consloe.log((3.1+3.2)>6.3); 返回值是true

2.无限接近0 则显示0

当一个值特别接近0,超过一个界限时,会直接显示0
所以,js中很少用其进行精确运算,很少做大型数据运算。

例如:

var x=0.5;
for(var i=0;i<25;i++){
	x=x*x;
}
console.log(x); //0 

特殊值: +0 -0
运算出现的结果会不同:
5/0 结果:Infinity 因为0不能作为被除数
5/-0 结果:-Infinity
50 结果:0
5
-0 结果:-0

String类型 (字符串):
简单的说,由单引号和双引号包裹的内容,就是字符串

\ 转义字符
能屏蔽字符本身的含义
代码一行写不下,可以用转义字符

var str="1234\
		 2345";

正常情况下,字符串写不下不能直接用回车键换行
换行的话,\n换行符要在一行中

另一种写法:
字符串拼接:

var a="123"+
	  "234"+
	  "123";

Symbol (es6新类型):
一种独一无二的字符串,永远不会产生重复现象。
主要针对对象中的key。不能使用new关键字的构造函数运行。
可以在symbol中传入一段参数,用来对这个独一无二的数据起到一个说明的作用。

作用:
避免命名重复,造成程序出错

出错例子:

let obj={
		"name":"123",
		"name":"wan"
}

运行时,不会报错。后面的key把前面的key给覆盖。打印结果:只会显示后一个键值对,前一个消失。

注意事项:
不能用obj.symbol方式 只能用obj[symbol]

强型转换:
let a=Symbol();
String(a);
Bollean(a);

特性例子:

let a=Symbol();
let b=Symbol();
console.log(a===b); //false

因为独一无二

引用数据类型(对象类型):

object 对象:
{ }
无序的键值对的集合
创建一个对象需要{ }来创建
写法:

 {name:"a"}

创建对象的常用方法:

1.var obj={ };
2.var obj={name:"a"};
3.构造函数创建
var obj=new String( );//创建一个字符串对象

特性:
{name:“a”}与{“name”:“a”}相同,对象的键都会自动转为string类型
键[ ]中不加引号也会被认为是变量
键不能为数字开头的纯数字
对象与对象间的存储空间是不同的
例如:
console.log({} === {}) 返回false

Aarry 数组:
是一种特殊的对象。

创建数组:

var arr=[ ]
var arr=[123,"qqq"]
var arr=new Array()
var arr=new Array("123","wa")

从创建速度还是运行效率来讲,直接量的形式都优于构造函数的形式

创建的区别:
构造函数创建过程:
1.创建函数
2.查询作用域链
3.创建作用域链
4.将数据写入

使用直接量创建:
步骤为3步
使用直接量创建,相当于将数据直接写入内存中,速度最快。相当于直接作用在作用域链条内。

作用域链条:
在ES5中存在两条,一条是var,也就是变量的作用域,另一条是函数声明。

特性:
在代码的执行过程中优先查找非函数链条。顺序是从上到下。而函数链条顺序从下到上。

js代码执行时,通过直接量向内存中存储数据的速度是最快的,其次是变量声明,最后是通过函数调用获得的变量。

数组可自定义下标,但自定义下标后,数组length为0。因为是自定义数组,在执行某些操作时,数组排列会出现混乱。

稀疏数组:
undefined占位(空位),这种索引不连贯的数组,叫做稀疏数组。
例如:

var arr=[1,2," ","w", ,5,9];

"w"后面为空位, 索引不连贯

Function 函数(方法):

函数(function)是一段可以反复调用的代码块,需要通过名字来进行调用。它能将一些数据(函数的参数)传递进去进行处理,然后返回一些数据(函数的返回值),也可以不返回数据。

方法(method)是通过对象调用的javascript函数。也就是说,方法也是函数,只是比较特殊的函数。

也就是函数和方法本质上是一样的,只不过方法是函数的特例,是将函数赋值给了对象。

js中所有的方法都以返回值的形式返回结果

函数创建:
function 函数名(){ }
var 函数名=function( ){ }; 匿名函数/函数表达式
var 函数名=new Function( ) ; 构造函数
var 函数名=(形参)=>{ } 箭头函数(ES6/ESMA2015)
箭头函数简写:
var 函数名=参数=>返回值
当参数只有一个时可省略()
当函数体中只有一句返回值时,可省略{ }

构造函数:
功能强大,效率低,速度慢,能创建一切类型,不建议使用创建对象以外其他类型

参数:
函数的参数不是必须的

形参:
定义函数时需要传入参数
实参:
实际调用函数时传入的参数

特性:
实际调用时参数可与设置时的参数个数不等
函数调用时,可省略最后,不用可传空字符串,但不能在中间省略

例如:

fn(num,,1)//报错

作用:
减少代码的复用性
避免造成变量污染

特性:
一等公民
与string,number等同级。能代替一切进行赋值
函数重复声明,后一个会把之前的覆盖掉
函数都有一个constructor属性,可查看每个对象的构造函数
函数没调用,函数代码体不执行
函数不执行的话,函数内部如果代码书写错误,代码运行也不会报错
函数如果没有返回值,打印( consloe.log( ) )的值为undeifined
()叫做方法也叫API,但并不是所用的方法都叫API

增加代码安全性的方法:
代码压缩
变量混淆

Date 日期类型

Math 数学类型

RegExp 正则表达式

原始类型与应用类型的区别:

原始类型的数据信息都存储于栈(stack)中,引用类型信息存于堆(heep)中。

引用类型的存储都是拆开的,数据信息存储于堆中,存储于堆中的位置信息存于变量中,变量存储与栈中。

引用类型可以修改单个值,但原始类型只能整个替换。

如果把引用类型的地址赋值给变量,修改变量,只是修改地址,并不会对值造成影响。

寻找顺序:
到栈中找到存储地址的变量,再用该地址去堆中寻找相应的数据
栈中->变量->堆中->数据

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值