一文弄清JavaScript数据类型


前言

每一门语言都有数据类型,数据类型涵盖了语言可以定义哪些变量


一、数据类型概述

与其他编程语言一样,js数据类型也包括数值型、字符串、布尔型、数组等等,不一样的点在于
js中数值型包括整形、浮点型,空缺值NaN也是number型,可以定义某种类型的变量,然后用
作某任务,某事件。

1.js中的数据类型

 JavaScript 数据类型
     在 JavaScript 中有 6 种不同的数据类型:
         string			【字符串】
         number			【数值型:包括浮点型、整型】
         boolean		【布尔型】
         object			【对象,new出来的】
         function		【函数类型】
         symbol			【标志:作为键可以用于创建集合】
     2 种对象类型:			
         Date			【操作时间用的对象】
         Array			【数组对象】
     2 个不包含任何值的数据类型:
         null			【空值】
         undefined		【使用未定义的变量,那么该变量是undefined】

2.typeof检测数据类型

<!-- 
    typeof可以检测变量的类型
    typeof "John"                 // 返回 string
    typeof 3.14                   // 返回 number
    typeof NaN                    // 返回 number
    typeof false                  // 返回 boolean
    typeof [1,2,3,4]              // 返回 object
    typeof {name:'John', age:34}  // 返回 object
    typeof new Date()             // 返回 object
    typeof function () {}         // 返回 function
    typeof myCar                  // 返回 undefined (如果 myCar 没有声明)
    typeof null                   // 返回 object
        NaN 的数据类型是 number
        数组(Array)的数据类型是 object
        日期(Date)的数据类型为 object
        null 的数据类型是 object
        未定义变量的数据类型为 undefined
        整数、小数、类型都是number
 -->

3.constructor检测数据类型

 <!-- 
 constructor属性检测变量类型
 可以结合toString indexOf函数判断具体的数据类型
 "John".constructor                 // 返回函数 String()  { [native code] }
 (3.14).constructor                 // 返回函数 Number()  { [native code] }
 false.constructor                  // 返回函数 Boolean() { [native code] }
 [1,2,3,4].constructor              // 返回函数 Array()   { [native code] }
 {name:'John', age:34}.constructor  // 返回函数 Object()  { [native code] }
 new Date().constructor             // 返回函数 Date()    { [native code] }
 function () {}.constructor         // 返回函数 Function(){ [native code] }
  -->

二、数据类型的自动转换

  <!-- 
      自动类型转换
	      数字可以通过String 函数直接转换成字符串
	        toExponential()	把对象的值转换为指数计数法。
	        toFixed()	把数字转换为字符串,结果的小数点后有指定位数的数字。
	        toPrecision()	把数字格式化为指定的长度。
	      字符串转换为数字
	      【如果是非数值字符串会出错,空字符串、空值会转换为0】
	      Number('str')//str
	      Number(" ")//0
	      Number("")//0
	      Number("99 88")//返回NaN
          parseFloat()	解析一个字符串,并返回一个浮点数。
          parseInt()	解析一个字符串,并返回一个整数。
    自动类型转换
         5 + null    // 返回 5        null 转换为 0
        "5" + null  // 返回"5null"   null 转换为 "null"
        "5" + 1     // 返回 "51"     1 转换为 "1" 
        "5" - 1     // 返回 4        "5" 转换为 5	【这点尤为独特】
        当你尝试输出一个对象或一个变量时 JavaScript 会自
        动调用变量的 toString() 方法:
	    自动类型转换成bool时,如果变量是对象则bool值为true
	    若变量是空引用或者没有值,或者值为0则为false
      
   -->

三、变量的定义

在一中已经介绍了数据类型有哪几种,现在就使用那几种类型进行变量的定义

js中严格遵循字母的大小写、并且只能对数据类型相同的进行计算,不能对不
同类型的数据进行计算

1.字面量

字面量(literal)用于表达源代码中一个固定值的表示法(notation),
整数、浮点数以及字符串等等都是字面量。
js中的字面量有数字、字符串、数组、对象、函数

函数作为字面量使用doument获取

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    
        <!-- js中的对象是由属相与方法组成的数据 -->
    
</head>
<body>    
    <h2>这是我得信息</h2>
    <p id="demo1"></p>
    <p id="demo2"></p>
    <script>
        var demox = {
            name: "张三",
            age: "28",
            demo : function(){
                return this.name + " " + this.age;
            }
        }
        // 使用函数名加()时会返回函数对应的返回值
        document.getElementById("demo1").innerHTML=demox.demo()
        // 使用函数名不加()时会返回函数的定义【得益于函数闭包的支持】
        document.getElementById("demo2").innerHTML=demox.demo
    </script>

</body>
</html>

2.定义变量

①使用var声明

直接声明赋值
   var q;
   q=10;
声明新的变量时,可以使用new声明他的类型
   var k=new String;
   var k1=new Number;
可以一次声明多个变量
   var a=10,
   b=1,
   c=2;
对象的声明
   var user={
      name:"张三",
      age:"19",
      sex:"男",
      id:"888"
    }

②不使用var直接声明

   w=10;

③两者区别

使用方法区别

变量的声明 var 变量名
对没有声明的变量赋值,该变量将自动转化为window的一个属性,可以使用delete删除掉
使用var声明的变量赋值后没法删除

变量的作用域

 函数内部使用var声明的变量只能在函数内部使用(生命周期伴随函数开始与结束)
 函数外使用var声明的变量是全局变量,在整个页面内都可以使用
 函数内没有用var声明的变量也可以在全局访问到,是window变量,js中
 声明的变量均会自动转化为windows变量

总结

js的数据类型较为简单,需要注意的是字符串的自动类型转换、函数可以作为字面量使用、使用var定义变量与不使用的区别。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷尔。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值