javaScript-数据类型和数据类型转换

特别声明,以下为达内科技web前端讲师张东张老师的原创笔记,未经允许,不可转于其他商用,仅供学习。

1. 什么是JavaScript:专门编写网页交互的语言

2. 什么变量:内存中存储*一个*数据的存储空间,再起一个名字

     声明: 创建一个变量, var 变量名;

     赋值: 将等号右边的数据保存到等号左边的变量中。变量名=值;

     取值: 在任何位置使用变量名等效于直接使用变量中的值

   特殊:1. 简写:var 变量名=值;——建议

     ***2. 声明提前:在正式执行程序前,都会预读所有var声明的变量,集中到顶部集中创建。***赋值留在原地***

        解题:先改为声明提前后的状态,再判断输出

     3. 出错:仅声明,但未赋值的变量,可以使用。

              未声明的变量,可以直接赋值——强烈不建议

              未声明的变量参与运算或表达式:

  报错:Reference Error

3. 数据类型:2大类:

    第一大类型:原始类型->值直接保存在变量本地的 数据类型

  【5个】:Number  String   Boolean     undefined   null

       Number: 64位=8字节,所占空间与数值大小无关

          特殊:舍入误差:计算机中也有计算不尽的数值

          解决:按指定小数位数四舍五入->n.toFixed(d)

       String:一串字符组成的一句话

           js中用unicode编号保存每个字符

               unicode:对全球主要语言中的每个文字编一个号

               查看任意字符unicode号: "字".charCodeAt(0)

           内存占用:一个英文字母,数字或符号占1字节,汉字占2字节

          特殊:字符串一旦创建无法改变,只能整体替换。

               因此会导致一个结果:每次字符串+拼接时都会浪费一个字符串 

       一串数字何时加"":

   如果数据可能用作算数计算或比较时,不加引号-Number类型

            比如:年龄  价格   数量

       如果数据不可能用作算数计算或比较时,就加引号-String类型

            比如:QQ   身份证   手机号

      Boolean:只有两个值: true/false

       何时使用:用作条件或结论时

  第二大类型:引用类型->值无法直接保存在变量本地的 数据类型。

  Why:js为什么会有数据类型转换?

  ****js是弱类型语言,有3个特点:****

      1. 声明变量时,不用提前指定数据类型

      2. 同一个变量,先后可保存不同类型的数据

      3. js会根据自身的需要,自动转换数据类型使用

数据类型转换:2大类: 

   1. 隐式转换:不需要程序员干预,js自动完成的类型转换

      算数运算中的隐式转换:

        1. 默认都转为数字,再运算

        2. +运算中,只要一个数据是字符串:

    +变为字符串拼接,不是字符串的数据,被转为字符串

       特殊:默认情况:bool类型:true-->1  false-->0

           如果转不成数字,则转为NaN

            NaN参与算数运算,结果永远为NaN

   2. 强制转换:程序员主动调用函数实现的类型转换 

  任意->字符串:2个函数

          var str=x.toString() x不能是null或undefined

          var str=String(x) 万能——相当于隐式类型转换

          一般都是自动调用,不需要手动调用

       检测数据类型:typeof(x)-->返回类型名 

          其实String(x)的源码:

          function String(x){

         if(x===null){

             return "null";

         }else if(x===undefined){

             return "undefined";

         }else{

             return x.toString();

         }

      }

       补:var value=x.valueOf(),仅取出x内部的值,不做类型转换

     鄙视题:区分String() toString() valueOf()

       任意->数字:3个函数

       任意->数字:var n=Number(x) -->相当于隐式转换

               强调:Number中只能转换纯数字组成的内容

           特殊:Number(null)->0  Number(undefined)->NaN

                 Number("")->0

           何时使用:隐式转为数字时自动调用

【字符串->数字】:

   var n=parseInt(str)

      从左向右,依次读取str中的数字字符

              直到碰到第一个非数字字符就退出

              自动跳过开头的空字符

              不认小数点,省略小数部分

           var n=parseFloat(str)

      认识第一个小数点

           何时使用:字符串类型转数字时使用

     Number vs parseXXX

        对于bool类型:Number可以转,parseXXX转不了

        对于结尾带单位的字符串: Number不能转换,parseXXX可以转

        任意->bool: Boolean(x)——隐式转换

          规则:除了 0,NaN,null,undefined,"",转为false外,

                其余都转为true。

 

 

posted @ 2016-02-07 12:39  讲一手流利噶英语  阅读(356)  评论(0编辑  收藏  举报