zoukankan      html  css  js  c++  java
  • javascript变量,作用域和内存问题

    1:ECMAScript所有函数的参数都是按值传递的

    function setName(obj)
    {
    obj.name="finn";
    obj=new Object();
    obj.name="fiona";
    }
    var person=new Object();
    setName(person);
    person.name;

    "finn"

    2:检测什么对象是什么类型的对象

    function test(){};test instanceof Function
    true

    3:执行环境和作用域链,没有块级作用域

    try
    {
    var color="blue";
    function changeColor()
    {
    var anathorColor="red";
    var finn="green";
    changeColor.fiona="ddd";
    function swapColors()
    {
    // var tempColor=anathorColor;
    // anathorColor=color;
    // color=tempColor;
    var test=1;
    with(changeColor)
    {
    try
    {
    var url=test+fiona+href;
    }
    catch(e)
    {
    var jjj=e;
    throw e;
    }
    }
    }
    swapColors();
    }
    changeColor();
    }
    catch(x)
    {
    var d=x;
    }

    4:y可以及时释放(chrome测试)

    function a()
    {
    var x=1;
    var y="111111";
    return function()
    {
    console.log(x);
    }
    }
    var b=a();
    b();

    5:y也可以释放(chrome测试)

    function a()
    {
    var x=1;
    var y="111111";
    setTimeout(function xxx()
    {
    console.log(x);
    },1000);
    };
    a();

    6:垃圾收集(标记清除和引用计数),引用计数缺陷:循环引用问题;IE中有一部分对象并不是原生的javascript对象,例如:BOM和DOM中的对象就是使用C++以COM对象的形式实现的。IE9把BOM和DOM对象都转换成了真正的javascript对象;解除引用的真正作用是让值脱离执行环境

  • 相关阅读:
    网络流24题-运输问题
    ASP.NET API
    面向对象理解
    冒泡排序
    HTTP Header 缓存
    HTTP Header
    Flask学习笔记07之模板渲染
    Flask学习笔记06之@before_request请求之前执行
    Flask报错:AssertionError: View function mapping is overwriting an existing endpoint function: inner
    装饰器03之多个装饰器的执行顺序
  • 原文地址:https://www.cnblogs.com/syf/p/4320933.html
Copyright © 2011-2022 走看看