美文网首页
JS 里的数据类型转换与内存图概念

JS 里的数据类型转换与内存图概念

作者: 聪聪的执著 | 来源:发表于2019-03-20 14:51 被阅读0次

1、JS里面有哪些数据类型:

基本类型六种:number、string、boolean、symbol、null、undefined;
复杂类型一种:object,由基本类型组成;

1)其他类型转string

使用toString内置API进行转换:
var n=1
n.toString()  // "1"
var b=true
b.toString()  // "true"
var c=null
 c.toString()  // 无法转换,报错
var d=undefined
 d.toString()  // 无法转换,报错
var object={name:'Angel'}
object.toString() // '[object Object]'

注:console.log打印出的实际是转换的字符串,即同console.log((x).toString()),很多的地方需要的是字符串,会自动调用toString内部API进行转换;

使用+''进行转换(空字符串放前后都可以):
1+''  // "1"
true+'' // "true"
null+''  //"null"
undefined+''  // "undefined"
var object={name:'Angel'}
object+''  // '[object Object]'

注:1+'1' //"11",等价于(1).toString()+'1',不同类型相加,有字符串会优先都转为字符串进行相加,但一般是不这样使用的;

使用String全局方法进行转换:
window.String(1)  // "1"
window.String(true) // "true"
window.String(null)  //"null"
window.String(undefined) // "undefined"
window.String({})   // '[object Object]'

2)其他类型转boolean

使用Boolean进行转换:
Boolean(1)  // ture
Boolean(0)  // false
Boolean(true) // true
Boolean('')  //false,空字符串
Boolean(' ')  //true,空格字符串
Boolean(null) //false
Boolean(undefined) //false
Boolean({})   // true,只要是对象就是true
使用!!进行转换:
!!1  // ture
!!0  // false
!!true // true
!!'') //false,空字符串
!!' '  //true,空格字符串
!!null //false
!!undefined //false
!!{})  // true,只要是对象就是true

注:其它类型转boolean,只有6个值是false,分别是0NaNnullundefined''""

3)其他类型转number

例:如何将'1'→1
Number('1') //1
parseInt('1',10) //1,后面的10代表几进制
parseFloat('1') //1
 '1'-0 //1,用减0的方法
+'1' //1,用取正的方法
+'-1' //-1,用取正的方法

2、内存图概念(个人理解)

定义:变量名、函数名等存储在代码区,实际的数据内容存储在Stack栈内存和Heap堆内存区,故内存图包含代码区、Stack区、Heap区,基本数据一般都存储在Stack区,对象数据一般存储在Heap区;

具体以下面例子说明:
  • 示例1
var a = 1
var b = a
b = 2
a?  //  1
  • 对应内存图分析


    示例1

从内存图进行分析,可以直观看到a的值没变,还是1;

  • 示例2
var a = {name:'a'}
var b = a
b = {name:'b'}
a.name?  // 'a'
  • 对应内存图分析


    示例2

从内存图进行分析,可以直观看到a的name属性值为'a';

  • 示例3
var a = {name:'a'}
var b = a
b.name='b'
a.name?  // 'b'
  • 对应内存图分析


    示例3

从内存图进行分析,可以直观看到a的name属性值为'b';

  • 示例4
var a = {name:'a'}
var b = a
b=null
a.name?  // 'a'
  • 对应内存图分析


    示例4

从内存图进行分析,可以直观看到a的name属性值为'a';

相关文章

  • JS 里的数据类型转换与内存图概念

    1、JS里面有哪些数据类型: 基本类型六种:number、string、boolean、symbol、null、u...

  • JS数据类型转换

    本博客会讲解下面几个概念 数据类型转换内存图垃圾回收和内存泄漏浅拷贝与深拷贝 数据类型转换 1. 任何类型转Str...

  • JavaScript基础总结

    ✍目录总览:(JS概念与组成、JS格式规范、JS基本语法【输入、输出、变量、数据类型、数据类型转换、运算符、流程控...

  • JS中的数据类型转换&浅谈深与浅拷贝

    本文会介绍将其他的数据类型转换成特定的一种数据类型。另外会简单引申JS中的内存图,深拷贝与浅拷贝等相关知识。 将其...

  • JavaScript数据类型(21)

    JavaScript类型简介 类型转换 各种类型的API 内存图 深拷贝VS浅拷贝 JS的七种数据类型:numbe...

  • js 数据类型转换和内存图

    转成字符串 toString null 和 undefined都报错 + '' String() 转成Boolea...

  • JavaScript学习笔记.md

    学习材料————廖雪峰js教程 数据类型 ===与== == 自动转换数据类型再比较;=== 不转换类型 (更好...

  • JS 里的数据类型转换

    JS 里的数据类型转换 Js中的数据类型一共有7种,即number,string,boolean,underfin...

  • 2、强制数据类型转换

    数据类型转换: 在js中,数据类型的转换有两种,分别是自动转换和强制转换 自动转换: 自动转换是用JS进行某些操作...

  • JS里的数据类型转换

    上一篇文章(JS里的数据类型)介绍了js中的数据类型。这篇主要介绍数据类型转换。 一、任意类型转字符串 转换成st...

网友评论

      本文标题:JS 里的数据类型转换与内存图概念

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