03.javaScript数据类型--基本数据类型

在计算机中,不同的数据类型所占的空间不同。js是弱类型或动态语言,数据类型在运行中确定。

且变量的数据类型是可以变化的。

(1)基本概念

  1. 在编程语言中,能够表示并操作的值(value)的类型,称为数据类型(type);

  2. 变量(variable)是一个值的符号名称,可以通过变量引用值;

  3. 可以把一个值赋值给一个变量, 这样程序在任何需要使用该值的地方,就可以直接引用该变量。

(2)数据类型分类

  • 简单数据类型又叫值类型或者基本数据类型
  1. string ,number ,boolean , undefined ,null
  2. null的特殊:返回的是objiect-->如果我们以后打算将一个变量存储为对象,暂时没想好放什么,就给他null值。
  • 复杂数据类型又叫引用数据类型,变量中存储的仅仅是地址
  1. Object(对象), Array(数组) ,Date(日期)

(3)基本数据类型

基本数据类型(数字、字符串、布尔值、未定义值、空值)

1.数字(number)

1.1进制数字表示

        1)八进制表示:数字面前加0;

var numl=010;//numl表示8

        2)十六进制表示:数字前面ox;

var numl=0xa;//10
  • 在进行算术计算时,所有以八进制和十六进制表示的数值最终都将被转换成十进制数值。
  • 八进制字面量在严格模式下是无效的,会导致支持的 JavaScript 引擎抛出错误。
  • 十六进制字面值的前两位必须是 0x,后跟任何十六进制数字(0~9 及 A~F)。其中,字母 A~F可以大写,也可以小写。(严格模式下也可以使用)

1.2 浮点数值

所谓浮点数值,就是该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字

1)解析成整数

var floatNum1 = 1.; // 小数点后面没有数字——解析为 1
var floatNum2 = 10.0; // 整数——解析为 10

2)科学计数法

var floatNum3 = 3.125e7; // 等于 31250000

//在默认情况下,ECMASctipt 会将那些小数点后面带有 6 个零以上的浮点数值转换为以 e 表示法表示的数值
var floatNum 4=0.0000003  ;  //3e-7

1.3 浮点数运算有精度问题

 1)0.1+0.2  !=  0.3  //0.300000000000000003

解决办法:

 1.4 数字型的最大最小值

    1)   数字型的最大最小值          

		alert(Number.MAX_VALUE);//1.7976931348623157e+308   
		alert(Number.MIN_VALUE) ;  //5e-324
	         

        2)  超出 JavaScript 数值范围的值,那么这个数值将被自动转换成特殊的 Infinity 值。不能被计算

  •         lnfinity(无穷大)=Number.MAX_VALUE*2,

       -Infinity(无穷小)=Number.MIN_VALUE*2;

        3) isFinite()函数。这个函数在参数位于最小与最大数值之间时会返回 true,

1.5 非数字 (NaN)//not a numb

这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)

  • 例子:任何数除以0

       实际上只有 0 除以 0 才会返回 NaN,正数除以 0 返回 Infinity,负数除以 0 返回-Infinity。

 console.log(typeof 1 / 0)                    //NaN,typeof操作符的优先级高于除法
 console.log(typeof typeof 5 / 0)             //NaN
 console.log(typeof (7 / 0))                  //number
 console.log(typeof (typeof 9 / 0))          //number
 console.log(typeof typeof (typeof 4 / 0))   //string;  typeof()返回的是一个字符串
		
  • NaN两个特别的地方:

        1)任何涉及 NaN 的操作(例如 NaN/10)都会返回 NaN

        2)NaN 与任何值都不相等,包括 NaN 本身。

  • isNaN(value)方法。用来判断非数字,数值返回false,非数字返回true

1.6 类型转换为数字

  • 隐式转换:不可以全为字符串类型的 - * /运算
var = 2018 - “2016”; //2
  • parseInt()  :

        1)得到的是整数,可以提取首字母为数字的任意字符串,

        2)如果第一个字符不是数字字符或者负号, parseInt()就会返回 NaN;

			
			var num1 = parseInt("1234blue"); //123
			var num2 = parseInt("");         //0
			var num3 = parseInt("0xA");     //10 --》0x:16进制
			var num4 = parseInt(22.5);      //22
			var num5 = parseInt("070");     //0
			var num6 = parseInt("70");      //70
			

 

        3)第二个参数:转换时使用的基数(即多少进制,可选值2/8/10/16)

var num = parseInt("0xAF", 16); //175

var num = parseInt("0xAF", 16); //175

  • parseFloat():

        1)得到小数浮点数,可以提取首字母为数字的任意字符

        2)由于 parseFloat()只解析十进制值,因此它没有用第二个参数指定基数的用法。

  • Number():只能转换数字型字符串。

            var num1 = Number("Hello world!"); //NaN
	        var num2 = Number("");             //0
	        var num3 = Number("000011");       //11
	        var num4 = Number("100abc");    //NaN
	        var num5 = Number(true);        //1
	        var num6 = Number([]);           //0,Number(["100"])值为100
	        var num7 = Number([100, 100]);  //NaN
			

2.  字符串型String

  • 字符串的双引号不是字符,是一种标记为了和变量名做区分
  • 使用单引号('内容')或着双引号("内容")或者反引号(`引起的内容`,多行字符串的表示方法)

          1) 单引号里面只能用双引号;同理

                        var = "he'll'o"  //he'll'o 单引号看作字符,双引号不是字符

           2)字符串转义符(写在引号里面

                

         

           3)字符串长度:length属性;(语法:string.length)

                     var str = ’my name‘;

                     console.log(str.length);

          4)字符串拼接:+;      字符串+数字(或其他类型)=字符串

3.  布尔值(boolean)

        字面值:true 和 false      //多用于选择结构的条件判断

4.未定义的值(undefined)

  •  变量没有初始赋值

        var n;//n=undefined,没有初始赋值;

  • 对象的某个属性值不存在

        var obj={name:"李明"};

        obj["age"] ;       

  • undefined的意义:为了程序的安全设定。为了防止野指针(比如:变量是没有初始赋值还是为null)

 5.空值

  •         用来描述空值;
  •  unll的意义:变量有数据,但是还没有业务数据
 var n=null;//n为null
     n+1;           //1
     n+'op'; //'nullop'

(4)typeof()方法

对一个值使用 typeof 操作符可能返回下列某个字符串:

  • "undefined"——如果这个值未定义;
  • "boolean"——如果这个值是布尔值;
  • "string"——如果这个值是字符串;
  • "number"——如果这个值是数值;
  • "object"——如果这个值是对象或 null;
  • "function"——如果这个值是函数。

1)获取数据类型(这是检测(不是取值操作),如果检测变量是无声明无赋值不会报错)

var num=10;
console.log(typeof num);//number
console.log(typeof num1);//undefined

var re = typeof("20")
var re1= typeof(null)
var re2 = typeof(function(){})

2)typeof()检测数据类型的底层原理

数据类型在底层都是以二进制形式表示的(存储的地址)

二进制的前三位为 0 会被 typeof 判定为对象类型,null为全0所以会被误判为"object",

- 000 - 对象,数据是对象的应用

- 1 - 整型,数据是31位带符号整数

- 010 - 双精度类型,数据是双精度数字

- 100 - 字符串,数据是字符串

- 110 - 布尔类型,数据是布尔值

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值