迅闻网
让更多人看到你

在javascript(javascript基本数据类型)

在javascript

JavaScript(简称“JS”)是一种具有函数优先的轻量级,解说型或即时编译型的编程言语。虽然它是作为开发Web页面的脚本言语而出名,但是它也被用到了很多非浏览器环境中,JavaScript根据原型编程、多范式的动态脚本言语,而且支撑面向对象、指令式、声明式、函数式编程范式。
JavaScript在1995年由Netscape公司的BrendanEich,在网景导航者浏览器上首次规划实现而成。由于Netscape与Sun协作,Netscape管理层希望它外观看起来像Java,因而取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。
JavaScript的规范是ECMAScript。到2012年,一切浏览器都完整的支撑ECMAScript5.1,旧版本的浏览器至少支撑ECMAScript3规范。2015年6月17日,ECMA国际组织发布了ECMAScript的第六版,该版本正式名称为ECMAScript2015,但通常被称为ECMAScript6或许ES2015。

java

javascript基本数据类型

ECMAScript中有5种根本数据类型,分别是:Undefined,Null,Boolean,Number和String,还有一种复杂数据类型Object,Object本质上是由一组无序的名值对组成的。(这儿就不细细讲述了)
typeof操作符
typeof操作符是负责检测给定变量的数据类型,下面是几个运用typeof操作符的比如
在这儿刺进图片描绘
这说明typeof操作符可所以变量,可所以数值字面量。留意,typeof是一个操作符而不是一个函数,因而比如中的圆括号尽管能够运用,但不是有必要的。
调用typeofnull会回来Object,由于特别值null被认为是一个空的目标引证。
1、Undefined类型
Undefined类型只要一个值,即特别的undefined。在运用var声明但未对其加以初始化时,这个变量的值便是undefined(默许取得的)。varmessage;仅仅指针指向了undefined(已分配空间,可是没有赋值)。
varmessage;
alert(message==undefined);//true
可是,包括undefined值的变量与没有界说的变量仍是不相同的。(没有界说的变量是空指针,没有在内存中分配任何空间所以报错)
varmessage;//这个变量声明之后默许取得了undefined值
//varage;//该变量未声明
alert(message);//undefined
alert(age);//报错
2、Null类型
Null类型是第二个只要一个值的数据类型,这个值便是null。从逻辑角度看,null值便是一个空目标,所以在用typeof操作符检测时会回来object
varbook=null;
alert(typeofbook);//object
留意,假如界说的变量预备在将来用于保存目标,那么最好将该变量初始化为null而不是其他值。这样的话,只需直接查看null值就能够知道相应的变量是否已经保存了一个目标的引证。
3、Boolean类型
Boolean类型只要两个字面值:true和false,这两个值是区分巨细写的,也便是说,True和False都不是Boolean值,仅仅标识符。
在ECMAScript中要将一个值转化为一个Boolean值,能够运用转型函数Boolean()
在这儿刺进图片描绘
4、Number类型
最根本的数值字面量格局是十进制整数,十进制整数能够向下面那样直接在代码中输入
varintNum=55;
除了十进制表明外,还能够通过八进制和十六进制来表明。其间,八进制字面值得榜首位有必要是0,然后是八进制数字序列(0~7)。假如后接的字面值超出范围,则前面的导零失效,后边的值将被当做十进制数值解析。
vara=065;//八进制的53
varb=085;//85
varc=08;//8
alert(a);
alert(b);
alert(c);
八进制字面量在严厉形式下是无效的,会导致支撑该形式的JavaScript引擎抛出错误。
十六进制字面值的前两位有必要是0x,后跟任何十六进制数字(0-9及A-F)。字母能够巨细写。
vara=0xA;
varb=0x1f;
console.log(a);//十六进制的10
console.log(b);//十六进制31
在进行算术核算时,一切以八进制和十六进制表明的数值终究会被转化成十进制数值。
浮点数值
浮点数值便是指该数值中有必要包括一个小数点,并且小数点后边有必要至少有一位数字。尽管小数点前面能够没有整数但不引荐。
varfloatNum1=1.2;
varfloatNum2=0.2;
varfloatNum3=.2;
console.log(floatNum1);//1.2
console.log(floatNum2);//0.2
console.log(floatNum3);//0.2尽管小数点前面能够没有整数但不引荐
由于保存浮点数值需要的内存空间是保存整数数值的两倍,所以ES会将浮点数值转化为整数值。假如小数点后边没有跟任何数字,会解析成整数保存。假如浮点数值自身表明的便是一个整数,那么该数值就会被转化为整数。
varfloatNum4=1.;
varfloatNum5=10.0;
console.log(floatNum4);//小数点后没有数字解析为整数1
console.log(floatNum5);//10
能够用e表明法(科学计数法)表明浮点数值。e表明法指表明的数值等于e前面的数值乘以10的指数次幂。前面的数可所以整数也可所以浮点数,中心是一个大写或小写的字母e,后边是10的指数幂。
varfloatNum6=3.1456e7;
console.log(floatNum6);//31456000
NaN
NaN,即非数值(NotaNumber)是一个特别的值。在ES中,任何数值除以非数值会回来NaN。
首先,任何涉及NaN的操作(NaN/10)都会回来NaN。其次,NaN与任何值都不相等,包括NaN自身。
console.log(NaN==NaN);//false
针对NaN的特色,ES界说了isNaN()函数。这个函数接收一个参数,该参数可所以任何类型,函数会确定这个参数是否“不是数值”。isNaN()在接收到一个值之后,会尝试将这个值转化为数值。某些不是数值的值会直接转化为数值(如字符串“10”或许Boolean值)。任何不能被转化为数值的值都会导致这个函数回来true.
console.log(isNaN(NaN));//true
console.log(isNaN(10));//false
console.log(isNaN(“10”));//false
console.log(isNaN(“”));//false
console.log(isNaN(“febby”));//true
console.log(isNaN(true));//false
数值转化
有3个函数能够把非数值转化为数值:Number()、parseInt()、parseFloat()。榜首个函数Number()能够用于任何数据类型,而别的两个函数则专门用于把字符串转化为数值。
console.log(Number(“HelloFebby”));//NaN
console.log(Number(“”));//0
console.log(Number(“000032”));//32前导的零被疏忽
console.log(Number(true));//1
parseInt()函数会疏忽字符串前面的空格,直至找到榜首个非空格字符。用parseInt()转化空字符串会回来NaN(Number()对空字符回来0)。
console.log(parseInt(“1234Febby”));//1234
console.log(parseInt(“”));//NaN
console.log(parseInt(“0xf”));//15(十六进制)
console.log(parseInt(32.6));//32小数点不是有效的数字字符
console.log(parseInt(“075”));//75(ES5认为是十进制)
console.log(parseInt(“70”));//70
console.log(parseInt(“0xa”));//10(十六进制)
能够为这个函数供给第二个参数:转化时运用的基数(即多少进制)。
console.log(parseInt(“0xf”,16));//15
console.log(parseInt(“AF”,16));//175假如指定了16作为第二个参数,字符串能够不带前面的”0x”
console.log(parseInt(“AF”));//NaN
第二个参数表明按几进制进行解析成十进制的数
//第二个参数表明按几进制进行解析成十进制的数
console.log(parseInt(“10”,2));//2
console.log(parseInt(“10”,8));//8
console.log(parseInt(“10”,10));//10
console.log(parseInt(“10”,16));//16
parseFloat()与parseInt()类似,从榜首个字符(方位0)开端解析每个字符,可是只解析十进制值,没有用第二个参数指定基数的用法
//parseFloat()只解析十进制值,没有用第二个参数指定基数的用法
console.log(parseFloat(“1234Febby”));//1234
console.log(parseFloat(“0xa”));//0十六进制格局的字符串会被转化为0
console.log(parseFloat(“071”));//71
console.log(parseFloat(“22.5”));//22.5
console.log(parseFloat(“22.34.56”));//22.34
console.log(parseFloat(“0958.2”));//958.2
console.log(parseFloat(“3.145e7”));//31450000
5、String类型
String类型用于表明由零或多个16位Unicode字符(2个字节)组成的字符序列,即字符串。字符串能够有双引号或单引号表明。
console.log(“Febby”);
console.log(‘Febby’);
console.log(‘Febby”);//报错
字符字面量(转义序列)
字面量含义
\n换行(nextline)
\t制表(table)
\b退格(backspace)
\r回车(return)
\f进纸(feedpaper)
\\斜杠
\’单引号(’)
\”双引号(”)
\xnn以十六进制代码nn表明的一个字符(其间n为0~F)。例如,\x41表明”A”
\unnn以十六进制代码nnnn表明的一个字符(其间n为0~F)。例如,\u03a3表明”Σ”
vartext=”HelloFebby!\u03a3″;
console.log(text);//HelloFebby!Σ
console.log(text.length);//14
字符串特色
ES中的字符串是不可变的。要改动某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包括新值的字符串填充该变量,这个过程是在后台发生的。
varlang=”Hello”;
lang=lang+”Febby”;
console.log(lang);//HelloFebby
转化为字符串
要把一个值转化为字符串有两种办法。
榜首种是toString()办法。这个办法是回来相应的值的字符串体现。
//转化为字符串
varage=18;
console.log(age.toString());//字符串”18″
数值、布尔值、目标和字符串值都有toString()办法,但null和undefined值没有这个办法。
能够传递一个参数:输出数值的基数,能够输出以二进制、八进制、十六进制,或许其他进制格局表明的字符串值
//能够传递一个参数:输出数值的基数,能够输出以二进制、八进制、十六进制,或许其他进制格局表明的字符串值
varnum=10;
console.log(num.toString());//”10″
console.log(num.toString(2));//”1010″
console.log(num.toString(8));//”12″
console.log(num.toString(10));//”10″
console.log(num.toString(16));//”a”
第二种是String()办法。这个函数能够将任何类型的值转为为字符串。由于null和undefined值没有toString()办法,所以String()函数就回来了这两个值的字面量。
console.log(String(10));//”10″
console.log(String(true));//”true”
console.log(String(null));//”null”
console.log(String(“”));//
console.log(String(undefined));//”undefined”
6.Object类型
js中目标是一组特点与办法的集合。这儿就要提到引证类型了,引证类型是一种数据结构,用于将数据和功用安排在一起。引证类型有时候也被称为目标界说,由于它们描绘的是一类目标所具有的特点和办法。
三大引证类型
1.Object类型
咱们看到的大多数类型值都是Object类型的实例,创立Object实例的办法有两种。
榜首种是运用new操作符后跟Object构造函数,如下所示
varperson=newObject();
person.name=”Micheal”;
person.age=24;
第二种办法是运用目标字面量表明法,如下所示
varperson={
name:”Micheal”,
age:24
};
2.Array类型
数组的每一项能够用来保存任何类型的数据,也便是说,能够用数组的榜首个方位来保存字符串,第二个方位保存数值,第三个方位保存目标….别的,数组的巨细是能够动态调整的。
创立数组的根本办法有两种
榜首种是运用Array构造函数,如下所示
varcolors=newArray(“red”,”blue”,”yellow”);
第二种是运用数组字面量表明法,如下所示
varcolors=[“red”,”blue”,”yellow”];
3Function类型
每个函数都是Function类型的实例,并且都与其他引证类型相同具有特点和办法。函数通常是运用函数声明语法界说的,如下所示
functionsum(num1,num2){
returnnum1+num2;
};
这和运用函数表达式界说函数的办法相差无几。
varsun=function(){
returnsum1+sum2;
};
也便是说,js依照存储办法分为值类型和引证类型。那么他们的核算有什么区别呢?
标题1:vara=100;
varb=a;
a=200;
console.log(b);
标题2:vara={age:20};
varb=a;
b.age=21;
console.log(a.age);
标题1的答案是100,标题2的答案是21,
标题1是简略的值类型,在从一个变量向另一个变量赋值根本类型时,会在该变量上创立一个新值,然后再把该值仿制到为新变量分配的方位上。
此时,a中保存的值为100,当运用a来初始化b时,b中保存的值也为100,但b中的100与a中的是彻底独立的,该值仅仅a中的值的一个副本,此后,
这两个变量能够参加任何操作而彼此不受影响。也便是说根本类型在赋值操作后,两个变量是彼此不受影响的。
标题2是引证类型,当从一个变量向另一个变量赋值引证类型的值时,同样也会将存储在变量中的目标的值仿制一份放到为新变量分配的空间中。
这时保存在变量中的是目标在堆内存中的地址,所以,与简略赋值不同,这个值的副本实际上是一个指针,而这个指针指向存储在堆内存的一个目标。那么赋值操作后,
两个变量都保存了同一个目标地址,则这两个变量指向了同一个目标。因而,改动其间任何一个变量,都会彼此影响。
因而,引证类型的赋值其实是目标保存在栈区地址指针的赋值,因而两个变量指向同一个目标,任何的操作都会彼此影响。

未经允许不得转载:迅闻网 » 在javascript(javascript基本数据类型)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

迅闻网-让更多人看到你

登录/注册返回首页