zoukankan      html  css  js  c++  java
  • JS 变量 相关内容

    JS变量按存储方式区分为哪些类型?:

      js变量按照存储方式分为两种类型:值类型 和 引用类型

      1.值类型(基本类型)

         布尔值(boolean) 、 null 、undefined 、数值(number)、字符串( string) 、Symbol(表示独一无二的值)

      2.引用类型

        对象(Object)、数组(Array)、函数(Function)

    JS中使用typeof 能得到哪些类型:

      typeof 可以得到的类型有:undefined、string、boolean、number、object、function

        console.log(typeof undefined) //undefined
        console.log(typeof 'abc') //string
        console.log(typeof true) //boolean
        console.log(typeof 123) //number
        console.log(typeof {}) //object
        console.log(typeof []) //object
        console.log(typeof null) //object   
        console.log(typeof console.log) //function

      注:typeof null  ,结果是object 。原因在于,null类型被当做一个空对象引用

    引用类型可以是instanceof 来判断:

    console.log({} instanceof Object)
    console.log([] instanceof Array)

    值类型和引用类型的区别:

      值类型:

        1. 占用空间固定,存储在栈中

        2.随着方法的执行结束,这个方法的内存栈也将自然销毁

        3. 保存预付制的是本身

        4. 使用typeof监测数据的类型

      引用类型:

        1.占用空间不固定,存储在堆中,栈中只存储对象的地址

        2.堆中的对象不会随着方法的结束而销毁,只要有一个变量所引用,这个对象就不会被销毁。只有当一个对象没有任何引用变量引用它时,系统的垃圾回收机制才会回收它。

        3. 保存与复制的是指向对象的一个指针

        4. 使用 instanceof检测数据类型

    显式类型转换:

      1. 显式类型转换 Number(arg)

        输入的arg是原始类型的情况:

          数值:转换后还是原来的值 。eg: Number(123) // 123

          字符串:如果可以解析为数值,则转换为相应的数值,否则为NaN。空字符串转换为:0。

              eg: Number('123') // 123 ; Number('123df') //NaN    Number('') // 0

          布尔值: true转换为1,false转换为 0。eg:Number(true) // 1; Number(false) // 0

          undefined: 转换成NaN。 eg: Number(undefined) // NaN

          null: 转换成0 。 eg: Number(null) // 0

        arg是对象类型的情况:

          先调用对象自身的valueOf()方法,如果该方法返回原始数据类型,则直接对该值使用Number方法,不再进行后续步骤。

          如果valueOf()放回的是复合数据类型,再调用对象自身的toString(),如果toString()返回的是原始数据类型的值,则对该值使用Number(),不在进行后续步骤。

          如果toString()返回的是复合数据类型的值,则报错。

      2. 显式类型转换 String(arg)

        arg是原始类型的情况:

          数值:转换为相应的字符串 。eg: String(123) // '123'

          字符串:转换后还是原来的值 eg: String('ab') // 'ab';

          布尔值: true转换为"true",false转换为 "false"。eg:String(true) // 'true' ; String(false) // 'false'

          undefined: 转换成"undefined"。 eg: String(undefined) // "undefined"

          null: 转换成"null" 。 eg: String(null) // "null"

        arg是对象类型的情况:

          先调用toString()方法,如果toString()返回的是原始数据类型,则对该值使用String()方法,不再进行以下步骤。

          如果toString方法返回的是复合数据类型的值,再对该值使用valueOf方法,如果valueOf()返回的是原始数据类型的值,则对该值使用String方法,不在进行以下步骤。

          如果valueOf方法返回的是复合类型的值,则报错。

      3. 显式类型转换 Boolean(arg)

          只有当arg是 undefined 、null、 -0 、+0 、NaN 、''(空字符串)时 将转换为false,否则其他的情况一律转换为true;

    隐式类型转换:

      1. 四则运算

        console.log(100 + '10') // 10010
        console.log(100 - '10') //90
        console.log(100 * '10') //1000
        console.log(100 / '10') //10
        console.log(100 % '10') //0

      2. 判断语句

      var a = 100;
        if(a){ //数值 100 转成 布尔值 true
            //....
        }
        var b = '';
        if(b){ //将字符串'' 转成 布尔值 false
            //....
        }

      3. Native调用 (console.log 和 alert 自动转换为字符串类型)

      4.==运算符

      console.log(123 == '123') //true
        console.log(0 == '') //true
        console.log(null == undefined) //true

      5.逻辑运算符  

      console.log(10 && 0) //0  10转成ture
        console.log('' || 'abc') // 'abc'  ''转成false
        console.log(!window.a) //true  

    Javascript中 何时使用 " ==="  何时使用  "=="?

      使用“===”情况:

         通常情况下,我们都需要写成“===”。因为“===”不用进行类型转换。在大部分浏览器中“===” 比 "=="速度更快。

      使用“==”情况:

        使用“==”的情况很少,有两种情况下使用:

        1.判断对象的属性是否存在

        var obj = {};
        if(obj.a == null){
            //这里相当于 obj.a === null || obj.a === undefined 的简写形式
            //这是jquery源码中推荐写法
        }

         2. 判断函数的参数是否存在:

      function fn(a,b){
            if(b == null){
                //这里相当于 b=== null || b===undefined 的简写形式
            }
        }

     JS中有哪些内置函数(抛开浏览器 只谈javascript)

      Object

      Array

      Boolean

      Number

      String

      Function

      Date

      RegExp

      Error  

    如何理解JSON

      1. JSON,是一种数据格式,在于后端的数据交互中较为广泛的应用

      2. JSON 也是JS 对象,常用API:JSON,string()和json.parse()

  • 相关阅读:
    Django的templates(模板)
    Django的urls(路由)
    Markdown中实现折叠代码块
    图片上传2
    Comparator 排序
    Serializable 序列化为文件
    统计连续签到的方法
    Serializable 序列化为字符串 base64
    Serializable 序列化使用限制
    Serializable 剔除某些不想保存的字段 transient
  • 原文地址:https://www.cnblogs.com/yangkangkang/p/8677927.html
Copyright © 2011-2022 走看看