美文网首页
JavaScript综合笔记3<高程+阮一峰+饥人谷>

JavaScript综合笔记3<高程+阮一峰+饥人谷>

作者: joker731 | 来源:发表于2017-11-30 07:17 被阅读18次

    本章节最终要的知识点是内存图

    数据类型

    • 七种数据类型(请背诵): number string boolean symbol - - -undefined null object
    • 注意没有 array 类型也没有 function 类型。
    • number
      整数和小数:1 1.1 .1
      科学记数法:1.23e2
      二进制:0b11
      八进制:011(后来 ES5 添加了 0o11 语法)
      十六进制:0x11
    • string
      空字符串:''
      多行字符串: var s = '12345' +
      '67890'
    • symbol
      方应杭:JS 中的 Symbol 是什么?

    (规范)如果一个变量没有被赋值,那么这个变量的值就是 undefiend

    (习俗)如果你想表示一个还没赋值的对象,就用 null。如果你想表示一个还没赋值的字符串/数字/布尔/symbol,就用 undefined(但是实际上你直接 var xxx 一下就行了,不用写 var xxx = undefined)

    object

    object 就是上面几种基本类型(无序地)组合在一起
    object 里面可以有 object
    var person = {
    name: 'Frank',
    'child': {
    name: 'Jack'
    }, // 最后这个逗号可有可无
    }
    object 的 key 一律是字符串,不存在其他类型的 key
    object[''] 是合法的
    object['key'] 可以写作 object.key
    注意 object.key 与 object[key] 不同
    delete object['key']
    'key' in object

    类型转换

    • 其他类型转换成字符串类型,可以通过toString或者String()来实现.但是老程序员都是用+''(通过+运算符加上空字符串)
    • 其他类型转换成布尔类型,只有特定的6个(空字符串,null,undefined,0,false,NAN)转为false,其他都转为true
    • 其他类型转布尔类型,一般通过boolean(),但是老程序员使用!!双重取反的形式,例如!!0 结果为false

    内存常识

    • 电脑是通过电流控制0和1,所以内存运行的时候需要一直充电.电脑的开机就是把硬盘里面的东西放在内存上去运行.
    • 操作系统占2G左右的内存,浏览器占1G左右内存,JavaScript引擎占100M左右
    • 简单类型值放在stack 复杂类型放在 heap
    • JavaScript没有指针,指针概念是C语言的,在JavaScript中是一种虚拟示意,可以说成引用.

    垃圾回收核心理念:如果一个对象没有被引用他就是垃圾,将会被回收.什么时候回收是由浏览器决定

    • 内存泄漏指的是:原本应该被回收的垃圾没有回收.这样就使得部分内存被永久占用,日积月累,浏览器吃的内存越来越多.

    深拷贝

    • 深拷贝就是A的改动,不影响B
    • 基本类型,简单的赋值就是深拷贝,侧重点在于复杂类型的深拷贝.

    以下是一些关于理解内存图的案例

    var a = {'name':fang}
    var b = a; //对象赋值是复制地址
    b=null; // 这里的null是把b的地址改为null不影响 指引的对象,所以结果为fang
    求a.name ? 答案输出:fang

    var a ={};
    a.self = a;
    求a的值,结果为undefined

    课后作业笔记

    var name = 'x'
    var obj = {
    name: 'frank'
    }
    obj['name'] obj.name这两个答案都是'frank'
    obj[name] 答案是undefined

    • 我想知道变量 a 是否已经声明过(值为 undefined 不代表没有声明过),应该用代码 if ('a' in window) { ... }
    • for...in 循环用来遍历对象
    • for...in 循环会跳过不可遍历的 key
    • for…in 循环不仅遍历对象自身的属性,还遍历继承的属性
    • with语句的一个很大的弊病就是绑定对象不明确。建议尽量不要使用with语句.但是在某些特殊需求下,with 还是有用的.

    相关文章

      网友评论

          本文标题:JavaScript综合笔记3<高程+阮一峰+饥人谷>

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