• JS变量与计算


    1、变量分类

    JS变量最基本的分类就是【值类型】和【引用类型】

    值类型:在内存中存放在“栈”中的数据,数据量比较小的,例如:undefined、string、number、boolean

    引用类型:在内存中存放在“堆”中的数据,数据量比较大的占内存的,基于节省内存的机制,栈中仅保留堆地址,例如:object、array、function、null

    【typeof】可以区分类型有`number` `string` `boolean` `undefined`(值类型) `function` `object`(引用类型)

    【typeof】可以准确区分 值类型,引用类型仅可以区分 对象和函数

    值类型:
    typeof
    undefined // undefined typeof 'abc' // string typeof 123 // number typeof true // boolean

    引用类型:
    typeof {} // object typeof [] // object typeof null // object 【因为 null 也是引用类型。null 就相当于引用类型中的 undefined
    typeof console.log // function
    //值类型示例
    var a = 100
    var b = a
    a = 200
    console.log(b)
    
    //引用类型示例
    var a = {age:20}
    var b = a
    b.age = 21
    console.log(a.age)

    2、变量计算

    JS 在值类型的运算过程中,特别需要注意和利用【强制类型转换】,使用场景:

    - 字符串拼接 “+”
    - `==`
    - 逻辑运算(`if` `!` `||` `&&`)

    1)字符串拼接

    var a = 100 + 10   // 110
    var b = 100 + '10' // '10010'
    

    2) `==`

    100 == '100'   // true
    0 == ''  // true
    null == undefined  // true
    

    `==`会先试图类型转换,然后再比较,而`===`不会类型转换

    1 == '1' // true
    1 === '1' // false
    0 == false // true
    0 === false // false
    null == undefined // true
    null === undefined // false
    

       jQuery 源码中的写法,只推荐在一个地方用`==`,其他地方都必须用`===`。这个用`==`的地方就是:

    if (obj.a == null) {  // 这里相当于 obj.a === null || obj.a === undefined ,简写形式
    }

    3)逻辑运算符(`if` `!` `||` `&&`)

    //所有经过`if`判断的变量,都会进行逻辑运算的强制类型转换,转换为`true`或者`false`
    var a = true if (a) { // .... } var b = 100 if (b) { // .... b强制转换成boolen值:true } var c = '' if (c) { // ....    c强制转换成boolen值:false }
    console.log(10 && 0)  // 0
    console.log('' || 'abc')  // 'abc'
    console.log(!window.abc)  // true
    
    // 判断一个变量会被当做 true 还是 false
    var a = 100
    console.log(!!a)
    

    日常开发中,以下变量会被转换为`false`

    • - 0
    • - NaN
    • - '' "
    • - null
    • - undefined
    • - false 本身

    3、 JS中有哪些内置函数 —— 数据封装类对象 

     `Object` 、`Array` 、`Boolean` 、`Number` 、`String` 、`Function`

     `Date` 、`RegExp` 、`Error`

    4、在 JS 中,所有的引用类型都可以自由设置属性

    var obj = {}
    obj.a = 100
    
    var arr = []
    arr.a = 100
    
    function fn() {}
    fn.a = 100
    

    5、如何理解JSON

    JSON.stringify({a:10, b:20})      //将对象解析成字符串
    JOSN.parse('{"a":10,"b":20}')   //将字符串数据转换为 JavaScript 对象

      从 JS 角度回答,`console.log(JSON)`得到`JSON`只是一个对象,有`parse`和`stringify`两个方法;

      json 也是一种数据格式,这一点和 xml 一样。

     

  • 相关阅读:
    arduino电子艺术PWM直流电机电调实验
    横坐标轴移动位置
    将不才则三军倾
    Source Insight常用快捷键及注释快捷键设置
    dos2unix批量转换的脚本
    win8: ListView
    win8: Asynchronous Programming in JavaScript with “Promises”
    WindJS 中的$await
    iphone:关于沙盒 存储路径
    win8: hello gril
  • 原文地址:https://www.cnblogs.com/shary-blue/p/14021928.html
Copyright © 2020-2023  润新知