美文网首页
变量的类型和计算

变量的类型和计算

作者: zoneccc | 来源:发表于2019-03-30 20:21 被阅读0次

变量类型

JS变量最基本的分类就是值类型引用类型,而两者的区别,我这里举个例子看一下。

以下是值类型的一个例子:

var a = 50
var b = a
console.log(b)

以下是引用类型的一个例子:

var a = {name:"zhangsan"}
var b = a
b.name = "lisi"
console.log()

typeof可以识别值类型,而对于引用类型则无能为力。但是,typeof可以将引用类型区分出function —— 相对于其他引用类型(如对象、数据)来说,具有非常特殊的意义。JS中的函数非常重要,因为原型、作用域都需要用到函数。

JS有很多内置函数,例如ObjectArrayBooleanNumberStringDateRegExpError等,基本都是基础数据类型的构造函数。

typeof可以区分的类型:number、string、undefined(值类型)、object、function(引用类型)

typeof null // output: object 因为null也是引用类型,相当于引用类型中的undefined

另外针对第二个例子,怎么将a的内容复制给b,从而保证a不影响到b?这里可以运用深度复制,将a的属性递归遍历,依次复制。

以下是实现代码,不对的欢迎指正:

deepClone(o, newO) {
  for (var key in o) {
    if (o.hasOwnProperty(key)) {
      if (typeof o[key] == "object" || typeof o[key] === "function") {
        deepClone(o[key], newO[key])
      } else {
        o[key] = newO[key]
       }
    }
  }
}

变量计算

简单的+-*/以及字符串的拼接和替换,这里不提。但是在JS值类型的运算过程中,存在强制类型转换这一特性,有以下的场景:

  • 字符串拼接
  • ==
  • 逻辑运算(if ! || &&)

首先是字符串拼接的常见错误,这里怎么规避呢 —— 可以使用typeof来解决,但是比较麻烦,因为写代码就是一件很累的事情。

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

==也会进行强制转换,如

100 == "100" // true (100 "100")
0 == "" // true ("" 0 false)
null == undefined // true (object undefined)

最后是逻辑运算中的强制转换,先说下if

var a = true
if (a) { // true
  // ...
}

var b = 100
if (b) { // true
  // ...
}

var c = ""
if (c) { // false
   // ...
}

也就是所有经过if判断的变量,都会进行逻辑运算的强制类型转换,转换为true或者false

console.log(10 && 0) // false
console.log (10 || 0) // true
console.log(!0) // false

日常开发中,以下变量会被强制转换成false

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

这里引出一个另外一个问题,比如if(a)如何知道变量被if转换为什么? —— !!a

相关文章

  • 变量类型和计算

    变量类型 值类型 引用类型(对象{}、数组[ ]、函数function) 值类型把每一个值都存到变量内存中,不会因...

  • 变量的类型和计算

    变量类型 JS变量最基本的分类就是值类型和引用类型,而两者的区别,我这里举个例子看一下。 以下是值类型的一个例子:...

  • javascript变量类型和计算

    实例案例 首先我先来看面试中常见的几道题: 1、js中使用typeof 能得到那种类型? 2、何时使用 === 何...

  • JS变量类型和计算

    变量类型 1.值类型 (赋值之间不会相互影响) 2.引用类型 :对象,数组,函数 (赋值是变量指针,不是真正的...

  • js的变量类型和计算

    变量类型 按照存贮方式来分,变量类型分为值类型和引用类型 1.JavaScript中的变量类型有哪些? (1)值类...

  • js变量的类型和计算

    js变量类型:值类型和引用类型值类型:number,string,boolean,undefined,symbol...

  • c#类型

    C# 的数据类型分为:值类型和引用类型值类型:变量:从用户角度,变量是存储信息的基本单元。从系统角度,变量是计算机...

  • JS基础课程总结 - 题目

    变量类型和计算 typeof能判断哪些类型 何时使用 === 何时使用 == 值类型和引用类型的区别 手写深拷贝 ...

  • Variable变量

    Variable变量是Pytorch中用于计算和优化梯度所用到的数据类型,非Variable类变量不能计算梯度 1...

  • 1.变量类型和计算

    变量类型(值类型、引用类型) 1.值类型的特点:不会因为赋值相互干扰 2.引用类型{对象、数组、function}...

网友评论

      本文标题:变量的类型和计算

      本文链接:https://www.haomeiwen.com/subject/xobsbqtx.html