js 变量 作用域及内存
由于Javascript是松散型的,所以其变量只是在特定时间用于保存特定值的一个名字而已,并不存在某个变量必须保存某种类型的值的规则,变量的值以及其数据类型都可以在脚本的声明周期内改变
一、基本类型与引用类型
1.1 基本类型:保存在栈内存中的简单数据段,值保存在内存中的一个位置
1.2 引用类型:保存在堆内存中的对象,变量保存的仅仅是一个指针,这个指针指向内存中的另一个位置,该位置保存对象
1.2.1 5种基本数据类型:Undefined、Null、Boolean、Number、String在内存中分别占有固定大小的空间,保存在栈内存中
1.2.2 按值访问:对于保存基本数据类型的变量,我们操作的是它们实际保存的值
1.2.3 引用类型的值由于大小不固定,因此保存在堆内存中,但存放引用类型值的堆内存的内存地址大小是固定的,因此我们将这个地址保存在栈内存中,当操作引用类型的值时,先到栈内存 读取该引用类型值的堆内存地址,然后在找到保存在堆内存中的引用类型的值
1.2.4 按引用访问:因为我们操作的不是实际的值,而是被这个值所引用的对象
1.2.5 保存在栈内存中的每个值分别占据固定大小的空间,因此可以按照顺序来访问
aaarticlea/png;base64,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" alt="" />
1.3 动态属性:只能给引用类型值动态的添加属性
1.4 复制变量值:针对基本数据类型值的复制,会在栈中创建一个新值,然后把该值复制到为新变量分配的位置上
针对引用类型值时,复制的只是一个指针,复制操作结束后,两个变量实际上将引用同一个对象

var num1=5;
var num2=num1;
num1=6;
alert(num2);//5
/**/
var obj1=new Object();
var obj2=obj1;
obj1.name="Jim";
alert(obj2.name);//"Jim"

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJQAAABfCAIAAACBcXn0AAADp0lEQVR4nO2cTa6CMBRGWYhDV+ESGLEKF8CAdTgkcR9OCCsxugMGhIEhMekb8PNuSxEtqHz2O3HwgFJND/e29dkGisASfPsDEHcoDxjKA4bygKE8YBzl3dOoiHNxIq820e2i6nirnx+SV5uknn6HtkLygIXltZfC43301ufkZUnxlGOvWUre9RbaA+WeRsVm+/hVptcnS7avieD2hZfl1bGl3Tt511vYXxKBKNv6ciz1kKrjvhJZhjlzGrfIu97C7vG/HMuNKUxiyssSI6kO5TVnjKfk//UoJ/uFk7xemGjHOt6W6bESrVxlSg3k3dOoeBx5471dk1ebaolyk1fHURVHRZyrLCnTXKRKS8vq8vJqsy3DSMaoJq95LCxdWpOQmUs1XpbXyBgMWLR8eE+j3ocoKZJtlvQmhLxO7UBeHTNbWnAYsCS1ZbTZj0Sut3BbhMf6YsjLKyOkOn+9vOaPpvxoh8duT7DUVEF1ma3LnF0g9hMAS1+VJUV4vOl9nq1m24iULCWvDZQwKgfJ0CpDUlOeKzPl5ZUeVd2AMK9GRptDKM+ZBdOmuCS6pZGScjqvTQy08lnyYAZJ+F8FYCgPmH95AYHClPeFh4c4QXnAUB4wlAcM5QFDecBQHjCUBwzlAUN5wKxC3vmwC4Jgdzi/fOdpb3xdtD+94fOtlS/Lk43vKs/lvt9gFZHnLoHyxuWdD7sg2J+atKanJbPZ5PFpr9+1O5y73DiS2yjPhSfk6VK6lp+S1x/10sSNA31z5Hna4amn5IlGbSNRqWl54pqhyyZqgQhqHhKv/D2VNm3H02nTeqmt5A3yFqsFh5+SZ6v5l3GWZ15agzzjfX8eZ3l6T6YNUT4n77T/v8nsnz3AXZ4x+HeLPFGF25hRDjd9Cjql1Gom6cQFygOG8oChPGAoDxjKA4bygKE8YCgPGMoDhvKAoTxgKA8YizwChCnv808QcYPygKE8YCgPGMoDhvKAoTxgKA8YygOG8oChPGAoD5hvytN+6z7nt+q+bivwNXmn/YP1l6/X5dkSk4a1pE1zSctLUJ48/uBWAi2z1kVSnjz+4FYC6v/tZqVN7zo8NSHvE1sJWIrNwattBSbSZn/+bavRl1/R6k8S/bK8d6xF9mdbAQd5i20lsGC2lPizrYCDvGW2EljQnLfbCrjIW2ArAdtGAjPa3NNtBdYySScOUB4wlAcM5QFDecBQHjCUBwzlAUN5wFAeMJQHjEUeAUKTR+CgPGAoD5g/quvyREzgvD4AAAAASUVORK5CYII=" alt="" />aaarticlea/png;base64,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" alt="" />
1.5 传递参数:所有的参数传递全部是按值传递,虽然访问变量的时候有按值和按引用两种方式,但是参数传递只能按值传递。在向参数传递引用类型的值时,会把这个值在内存中的地址复制给一个局部变量,这个变量的变化不会反映在函数外面

function setName(obj){
obj.name="Jim";
obj=new Object();
obj.name="Greg";
}
var p=new Object();
setName(p);
alert(p.name);//"Jim"
//如果是按引用传递的话,那么p就会被自动修改为指向其name属性为”Greg“的新对象,但是由下图分析可知,参数传递是按值传递

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhUAAADWCAIAAADpZecaAAAW9klEQVR4nO2du23rMBRAPUjKTKERUmUKD5Aic7gMkD3cBJnESDZIEaQIAjyAr5As8ytR/3upc/CK50imyEv5HvNj+2AAAACGc9i6AgAAoBL8AQAAY8AfAAAwBvwBAABjwB8AkOTv6f775bN9+O/l8evp3Xy8ft89/n50P/X95+75r/8K7z/9RYFQ8AcAJHH9YSnh4/W7Rw95/nh7/srSDEgEfwBAEtsf/14ev+7uI/+e3ruOWv/qonLOtEsGseAPAIjw9+Sm/qfn77v7r4fXf8YYY/69PNrzWqad2moJBijeVNj1HCavFIM/ACBJm/T/nu6/Hx4H+OPtuT3ZK8r7iyeq2z/36SAQ/AEASZqk//H6/fD67+05muh/3owJ/PHv5fGre/yRXvmoJ7jqYkEy+AMAkjhJ3xpS9I0/3n/u7r8fHr+s6SmnqI/X7/jyxufvw/0Xk1pKwB8AkGSUPz5/H65ueHtuZWAVdbVL4I+/J6atNNHvD39a87pf+++pd3cEG8ABdOP7o3/+6v3HG1hcFeIspbx81ucnFz9YAtHAeH80h7o6mA3gALq55fd6/aN7/GHpxOHt+evh9Tf6UcTgcv4eLRDMCH98/j7EhwtsAAcohqs5rBf7gPWPeIH4ozC6/OFvAG/6tfZHvczl3GFsAAcomcT8VS0V/LFDescf1lJYvWXiLnhXcoUN4AAlE7yibRL+sN9oOu8mnfNvZuLdpCb6/NE6w7pv/p7uv19ef9gADgCwY3r88ff0+PP0+PX0bt6ev1/erbcSkeTOBnAAgP3Q5Y/aB5FhaWIZjQ3gAAD7oXv9/PkvOq3ZLIx//j7cfz28/n14/mADOABA+YzYv2vaNbFmCus6HGEDOADAfhjsj2a48PD4HcxKsYEPAGA/5Pvj/ccdW1y3SL3/JPZfheAPAIBiGDd/ZR1yf1KGDeAAADuB798FAIAx4A8AHRwAZHC7Jzd8PQBAPvbrFmAr8AeAPvAHSAB/AOgDf4AE4v7YcjoNoI8tXimyIAgggUPKH1tUZgDyawgLQdcbggAywB+gDLreEASQAf4AZdD1hiCADPAHKIOuNwQBZIA/QBl0vSEIIAP8Acqg6w1BABngD1AGXW8IAsgAf4Ay6HpDEEAG+AOUQdcbggAywB+gDLreEASQAf4AZdD1hiCADPAHKIOuNwQBZIA/QBl0vSEIIAP8Acqg6w1BABngD1AGXW8IAsgAf4Ay6HpDEEAG+AOUQdcbggAywB+gDLreEASQAf4AZdD1hiCADGbzx/l4OFSny+VUtb9SfTzPU8cYvH52C11vCALIIMMf52NOQefj4XA4HKrTpX5ci2QxhfD6KZ72fUj4903qIwqCsAmHPLau5nr0+uN8zAvH+ejr4nKqlhNIfic1A6P4wcup6jg6lfOxPwDno3P9y6k6HM/mcqr6q3U+ZoXXu0J+XVNPbOqYeZn42fG/xtnz6zMFQViNETfefu7VPn9cTlW+P7z80Zm5J6LBHzn68NKupYT+DJvnj6xaRLJ/+vr2kdvzlvOHBzox+GN55rq7yr5Ld+6P6bjpuZnFy+BaJTvt2otHDsdz19Gg1JwzbyUHZ1enS6wlTjXT/qifeAuJffbt/9P8Ef7FZlSpythJM9dnubuoyPvzsNz81aKJO78bVvXHjf4ZKC9DV8djZWXpy6nqGRAEKTgyAsiZB3PLqQsJWtWU7db5eL5dsz1yPF8L9MV0OzKzP8ITijdKkY3altVulZLuyV5/mMupyimoyR9tTgh9Mit+B7i5yr5u98Yw3y72aX7itZJndboE+dE53UvA6XRpJ+Cqqgb4I9BF6I+bDKLcRiuuP6pw4cofJlnjjyamx/YMt8D0+CPeX72MeO2Vp5MyWiGETe6KMm7Ffn9kUifi80rbd/0dYgd/xuSW7aIbw5yj8QeRUm7Z+XI6WQk0aGnwx15/1LpIZProW/Zwe4Lvj/TKh7M5Ljb+SFXTeULjgGD9w1XfCvNXI0rQrhOl1RbItpHU3o8z+2OxaSKfgzvDFnmrfk1P3RvDrCcHKe02+dOxlSy+byl/MdrJ19aDvvHH+XioBwrRZ3fsn64PeAk+HJZ4NbbX6vvWz10FCfRHWKA6o6iopHCE9LWQaoxDvz+iud2qTffC/u2/iUXn9o12ItvFVgqap3Uspife7+f6w6qQ2xZrVf5QVZEU3es2v5CIW9P+qJdwwhlB2f6IXkK4TmTWShHSAiitPpngj0P/GCPfH/WkV5i488cfadtcywgGVNc2OEsp9YrP8dyzI6w9L1qftnWZ/ujbv6vFH+EVpelESDWUIjN6MmvVjX5/DJ+/sp/QLZqOS9iH7E0DzYbYIf64pfLe8Yc3eLFLqU6n6EcRIyeGe7T61j8i/qgbnvCHN1aqd17Vy2MK/RFWYHOjbB4EvUgOneS6RZnNHytj19Cf6neN0b0xzDaDX87lVNlvnN1L2BuQ+hc7Yunyag737X7+/quA86L+cKN0cIY66aq4jVQ6/uhlfZ0IDIJ85AwfO1BRyZYS/GGMN/MT7EJKbwzz0r+zCBKZ9UoV4Zw+aPyRboXfoCX9EV4tOKX9cGAwlgsr1Y5NktvQyvKHxwo6kR8EaeiKmJbaluKPsaT3uI7ncqoOx1PPZ8Cj02GpNYRbsan9VKHW3POdabKucp0JqZ7q+pe3SA22hkQjgfyb0yNs7ixlTi9kP2gMl4o679wfOZ/PBlnIvzl7ma6TAoKwJhrDpaLO+/bHyov+MAfyb86hjNBJeUFYDr2xkl/znfqjay8TyEb+zTmRnPmu4oMwF9oDJbz+O/UH6GWHXR/qZIdBGEEZUZLcCvwByqDrZ1+NL5KSIiO2LfgDlEHXG+91mzHftUNKioPYtuAPUAZdb/qCgE7Ka7XMFuEPUAZdbwYGQbtORtRZYzO7kdmipD8AxLLFK0UWU4KgMZ6DKqmiRSMQ2K4D4w/QBV1v5g6CCp3kV0xsE6YjrWn4A5RB15uFgyBWJzmVEVXh2ZHWOvwByqDrzbpBEDXf1X31PdwbotqIP0AZdL3ZOgjb6qTjinu4N0S1EX+AMuh6IywI6+skdRVRYVkIUW3EH6AMut7IDsIK813RMiXHZF7ktBR/gDLoeqMtCEvoJCxHV0ymIKel+AOUQdcb5UGYSyfec1XHZBByWoo/QBm6uv7r7n6JYnUFoZsp813tySUFJAch7cUfoAxFXf91d1//m71kRUEYwSCd1CeUHZAQIe3FH6AMLV3fygN/TKRXJwut0ktGSHvxByhDS9cvJw+jJwhLEJ3vmhKQzp+xvpwqiT9yLeQGwB+gDBVdv+jgwygJwtLYix9ThiD4YzT4A5ShousXlYdREoTl8GwxMRqd/pjO+Xg4HM/zlyvhHsAfoIxNun6QD5YefJh93/9h2/HHVuAPUMa2/shRwtLyMHu9/zvWz/uffDlV1pKJndAbf9gnWId9u9in+dY5H91D7jVnlpSEewB/gDI290e3GFYYfJhd3v8dTe6PxvnoSMFd1Giyfvs4PBp/ECnlZojL6XS+HWD8IYtBNdxwfSzn3jkfg/c3x7O5nKr+ap2PWXemd4X8uqae2NQx8zLxs+N/7WermzNTISvIw2h4hc5I79p4XzQiCeByqtq73ZNL5Gjz5OCWvb1I7WdEro4/RrJQ7lbij6xbx027lhL6M2yeP/Ju4DD7p69vH7k9r2x/mDyF4I95yWlpzznR3G4lhUh+iB71ZqPsua4OfeCPKYj3x3Tc+8OaAu3hWiU77SZu0eYCyaNBqTln3koOzq5Ol1hLnGqm/VE/0Z0tCJ2o0B+mTyHryMNsHQRp9ERjVn+k31Dhj9hfJ7JQ7h5Uw432V/TPQHkZujoeKytLX05Vz4AgSMGREUDOPJhbTl1I0KqmbLfOx/Ptmu2R4/laoC+m2xGt/qhJKQR/TKe+U4Y+pfP44Pkr+wndoum4hH0If4xkPX9I21/h3TbpdGkn4KqqBvgj0EXoj5sMotzeWLn+qMK3U/4wyRp/NDE9tme4BabHH/H+6kbCy8bEFLKaPIyYICyHfZPmnNx9Qn2veZME7cPmDnYfO4+sl+TBG1nbN7Z7CfsFssTbVwn3wEz+mCt3j6r3tSBR+yuCP/b6o9ZFItNH37KHg2bfH+m3Ps7tHht/pKrpPKHp1mD9w1VfSfNXNp5C8MdC9LokKxrOKyt4lVSnczxF+TnKSXWRWa9UEZHTJyLhHpjDH3Pl7rH1Fri/IlGhnvGH96Bv/HE+HuqBQvTZ4Tsit/XJ10TbXV6N7bX6vvVzV0Gl+sMEyyHryMMIC8KaRF2yaDSWmn6ajIR7YLo/5srd4+stbn/Fbf24YzE98X4/1x9Whdy2ONO2VSRF97rNLyTi1rQ/6iWccEawUH+YIR8NmRFpQdiEqEvmJmsf/SZIuAcm+2Ou3D2h3rL2V9QDrDBx548/0ra5lhFI+doGZymlnjU8nnt2hLXnRevTti7TH337d8vzh1nrM4M2AoOwLUtZZOG9N6MRcgMU4Q9J+yvqWZ5Ibuz0xy2V944/vMGLXUp1OkU/ihg5Mdyj1bf+EfFH3fCEP7yxUr3zqp5ljvmjU3HS8YYgW1dnX5hl5NH1WhPA7O0dx2H9+atE7h5f7+sVBe2vyPRHZF1twPpHhPOi/nCjdK1233K728jyxh/hEgj7d9ekVcjWFVkVIe2d7o/ZcvfoertXCjLyFvsrBo0/0q3wG7SkP8KrBadUp0titSesVDs2SW5DK84fZsWJLGlB2Io2DnsLiJD2zuAPY2bL3ePqPZEl9ldcTtXheIovx3ckaZNeQ7gVm9pPFUbXPd+ZJusq15mQ6qmuf3mL1GBrSDRiCHnl1HR8CoTvT1waJ3ntLCBC2juTP8YyOnfPV0O5+ysgipBXTk33p9D5/Y+FqN9yhH/cpDLrI6el2/pjfO6erYZS91fsjfxsK+fFk/NFWAspRE4Q1ifV9v3ERE5LN/XHhNw9vYbC91fsk5ycK+fFk/lFvEsoRE4QVqaj4fuJiZyWbuOP6blbTgRhCToyr5CuH/RbILMrREgQVqa31XsIi6g2brz+MRr5NYRZCJOvkK7PFMNCChEShDXJafIewiKqjfgDFGCnYAldP8gKS3w0REIQ1iSzvXsIi6g24g/QxMpfEzJXNWZXCPd/irIjI611+AOUUXf9hiIZZ4J5FcL9n6LsyEhrHf4AZXhdv75IRl8Rf6xDqcER2C78AcpIdf06FpnoAPyxDvPGR8KHxGT2OP4AZXR3/dLDESELMNz/3UyOj/0dsO5v3m2EzB7HH6CMzK5fLtHjDxVMC1HXD/6sj9juTvoDQCyDbnEhI4Z5GRqEHTItRPgji0PUHwDlUZJIxCYUUUyIkuMP/yeL6h9Dq2l/WKFhfudI7mv8AbujAItIzimiGBuoTn+0j/wvYgp/72Yqwjsaf8BOUT0cEZ5WRDEqVp3+cH8v1P/xvPlW2uX3Mv6AvaNRJPIzixzm94c1woj8ein+ANghikQiP7OIYni4HBFs4g8VXYw/AHzki0RFchHFwIg5mljfH1r6F38AJBFrES35RRT5QfN2767sD0Wdiz8AehA4HFGUYkTR+/mh64YqRwKr+WPEx5u2BX8A5CJHJLqyjDRkRk9mrbrBHwCD2VwkGnONKKQFUFp9MsEfAOPZSiRK040ohEwWCanGOPAHwAysbBG9GUca20ZSez/iD4DZWG04oj3viGKTEYDqYUcL/gCYn6VFUkDqkcZqCb0Mc9TgD4AFWUgkxSQgaYz7jYBtS94Q/AGwBvOKpLA0JJC50n2R2mjBHwCrwu+f6+JgsdxTlII/ADZg4nCk+MTUQRu6jn8LXfqQx0JXFwj+ANiScSlvV0lqhBvW0QngDwARDEp2e/DHjNkfkSwE/gCQRU6yK9sfy+V6RDIv+ANAKB2ZrlR/rJbcscgs4A8A0UTfMhfmj62GBVhkIvgDQAd2ki3JH5tn8M0roBf8AaCMkibxhbRCSDXUgT8A9FG/blWLRFrNpdVHBfgDQB/e/JW63Ce2tmIrJhP8AaCP6PqHluGI8BoKr54o8AeAPrrXzyWLRGatPFRUUgL4A0AfmfuvpIlETk16UVTVDcEfAPoYun93IZEMKlBdRlZX4fXBHwD6GP35j9ktkv+FhjNedDWUVns18AeAPiZ+fnDeryac5RyxqK780uAPAH3M9fnzWUTS+3TVKVh15ZcGfwDoY/bvL5kiku5nFZB/C2jCQuAPAH0s9/1X40SSOr+YzFtMQ+YFfwDoY4XvTxxkEfyxT/AHgD5W+/7d/OFIeE5hObew5swC/gDQx/rf354jEu9oYQm3sObMAv4A0MeGv//RIRL7j0Vm2yIbNQX8AaAPCb8fFRVJ+7DIVFtko6aAPwD0IcEfLbZF8MeuwB8A+hDlj5p2OCLqGxtnp+CmjQB/AOhDoD9apvjj7+n+6+H1X/zg5+9Dx9GVwB82+ANAH3L84Q07Jo4/8Icu8AeAPlb2R0oSs39ssNMf03n/ubv/eZtUBP6wwR8A+pAz/giZkmHl+8OgEAv8AaAP3f74eP22RjB2Qm/8YZ/w9O4fjZbjW+f9xz307+XRHjZ9v3wu2MDdgD8A9KHYH2/PjjM+Xr+tbP735MogPNoeenv+unv8/agfuEsjb8+OIT5ef5vLMf6YGfwBoA+1/nj/Cd77/3t5/Lp7/jPGNP5o/h8/2kji8/fBNcHH63ejk8/fB2fU4l0df8wI/gDQh1Z/fLx+hxncGklE1j+iR90ZMGcqLHqJBvwxM/gDQB/4IykJ/LEi+ANAH1r9MXz+yjaK9f9IOR2XsA/hjxnBHwD6UOuPZh/ULYm7y+nN+nm7ehEevbrEL+fj9fv6rPASP9b6+ZSdVzX4owV/AOhDrz+Maaxw/dfuoTLmaog/a69tZHfv9aGzJTcy6xXZAdz+nf27s4A/APSh2x9j+XtKbaxaFfzRgj8A9CHZH2apDPv5+zDD7NNEkIcN/gDQxx794XxgcDPwhw3+ANDHrvzRrnNM3zo1Hfxhgz8A9LErf4ii4KaNAH8A6EO4P0yhebbIRk0BfwDoA39sQpGNmgL+ANAH/tiEIhs1BfwBoA/5/jDFZdvCmjML+ANAH/hjfQprzizgDwB9qPCHKSjnFtOQecEfAPrYpT+sn6S9W/uLTPBHFPwBoA8t/jAzZV7/K3WNMW/PqykEeaTAHwD6UOQPMz3/bvrNJcijA/wBoI89+aP/axOdb31vv8jd/o3b9Le7f7+8p38vfXrlCwd/AOhDlz/MlCzc9Xu0Df6vThlvyPL5+5D84anIc2ep9j7AHwD6UOcPMzoX+5NX9ip66ldvP38fXOV8vH43hYQ/QfiZGn8gj17wB4A+NPrDjMvIt9Tv4P9quj1DZc9cWf9+3qKjmbg/kEcO+ANAH0r9Ycbk5fiPlvf6Iz7llecP5JEJ/gDQh15/mOHZ2VZF9I++PxLKSRx6/3HXP5BHPvgDQB+q/WEG5+jP34d7bwuvveYR+CP4vMjH6/fVEH9PTlHe+jnyGAT+ANCHdn8YY+o1iQFPsDbd2ovnJuYPY/1qYbh/t3FGsyjSzF8Nrg/gDwCNFOCPGgEpux7cbF4NleAPAH0U4w8zYiCywNUl/LK6RvAHgD5K8kfNahb59/JYr5835gg/nQ7Z4A8AfZTnj5p1LOKso6z7Pb6FgT8A9FGqP2qWswiL5POCPwD0UbY/auxRgoRyIAR/AOhjD/6w8b6JZMaTYQr4A0Afe/OHR/jdVghjE/AHgD527g8QAv4A0Af+AAngDwB94A+QAP4A0Af+AAngDwB94A+QAP4A0McBQAa3e3LD1wMAAOgFfwAAwBjwBwAAjAF/AADAGPAHAACM4T915fddT3C1WwAAAABJRU5ErkJggg==" alt="" />
1.6 检测类型:typeof操作符是确定一个变量是字符串、数值、布尔、还是undefined,以及object的最佳工具,但是对于一个对象或者null,却只能返回"object",因此在检测引用类型值的时候,引入了instanceof操作符
function Name(){
}
var p=new Name();
alert(p instanceof Name);//true
二、执行环境和作用域
2.1 执行环境定义了变量和函数有权访问的其他数据,每个执行环境都有一个变量对象,环境中的所有变量和函数都保存在这个对象中,我们编写的代码无法访问这个对象
2.2 全局执行环境:最外围的一个执行环境,在web浏览器中,全局执行环境是window对象,因此全局变量和函数都作为window对象的属性和方法创建的
2.3 当某个执行环境的所有代码执行完毕后,该环境会被销毁,保存在其中的变量和函数也会被销毁
2.4 全局执行环境的销毁是在关闭网页或者浏览器时
2.5 每个函数都有自己的执行环境,当执行到某个函数时,会把控制权交给该函数,直到该函数执行完毕后,再把控制权交给之前的环境
2.6 当代码在一个环境(例如一个函数)中执行时,会创建变量对象的作用域链
2.7 作用域链的作用是保证对执行环境中的变量和函数的有序访问
2.8 作用域链的前端始终是当前代码的执行环境的变量对象
2.9 如果执行环境是函数,那么变量对象是活动对象,初始只包含一个变量arguments对象,外层是包含该环境的环境,外层的外层是包含该环境的环境的环境,一直延伸到全局执行环境
2.10 全局执行环境始终是作用域链的最后一个对象
2.11 在搜索某个标识符(如变量名,函数名等)时,会沿着作用域链一级一级的搜索,直到找到,搜索停止,这也就达到了2.7中提到的作用域链的作用(保证对执行环境中的变量和函数的有序访问)

var color="blue";
function change(){
var another="red";
function swap(){
var temp=another;
another=color;
color=temp;
}//这里swap函数只是定义,并没有执行
swap();//这里才是swap函数的执行
}//这里change函数只是定义,并没有执行
change();//这里才是change函数的执行

aaarticlea/png;base64,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" alt="" />
2.12 内部环境可以通过作用域链一级一级访问都所有外部的变量以及函数,包括最外层的全局执行环境,但是外部环境却不能访问内部环境的变量和函数,作用域链只能从下向上搜索,不能从下向上搜索
2.13 例如swap函数可以访问全局变量color,但是全局变量window却不能访问到another或者temp
2.14 延长作用域链的方式:第一try-catch语句中的catch块,第二with语句,这两个语句都会在作用域链的前端添加一个变量对象,对于with语句来说,其变量对象中包含着为指定对象的所有属性和方法所作的变量声明。对于catch语句来时,其变量对象中包含的是被抛出的错误对象的声明,这些变量对象是只读的
2.15 浏览器的兼容性问题1注意IE与标准在try-catch语句延长作用域链的不同之处:即使在catch块的外部也可以访问到错误对象
2.16 js没有块级作用域的概念,所谓块级作用域就是由花括号封闭的代码块都有自己的作用域,但是js中使用var声明的变量,会被自动添加到距离最近的可用的执行环境中,未使用var声明被初始化的变量,会被自动添加到全局环境,其作用范围跟花括号没有关系
2.17 查询标识符时也会根据作用域链,从下向上一级一级进行搜索,搜索到后,就停止,因此,如果局部环境存在同名的标识符,就不会使用父环境中的标识符
三、垃圾收集机制
3.1 js具有自动垃圾收集机制,垃圾收集器会按照固定的时间间隔周期性地执行这一操作,两种方式:标记清除和引用计数
3.2 标记清除:js中最常用的垃圾收集方式,当执行流进入到相应的环境(即当执行流调用某个函数)时,该函数中声明了某个变量,那么这个变量就被标记为“进入环境”,从逻辑上讲,永远不能释放进入环境的变量的内存,当变量离开环境时,则被标记为“离开环境”。可利用翻转某个特殊的位来记录
3.3 引用计数:跟踪记录每个值被引用的次数,将一个引用类型的值赋值给一个变量,那么这个引用类型的值的引用次数就加1,相反,如果这个变量被赋值了其他值,这个引用类型的值的引用次数就减1,当引用次数为0时,就说明没有办法再访问这个引用类型的值了,那么她所占的内存空间会被垃圾回收器给回收
3.4 循环引用:如果对象A中包含一个指向对象B的指针,而对象B中也包含一个指向对象A的指针,就形成了循环引用,它们的引用次数永远不会为0,为了避免循环引用问题,最好是在不使用它们的时候,手工断开它们之间的连接
3.5 内存限制问题:js中分配给web浏览器的可用内存数量通常比分配给桌面应用程序的少,原因是为了防止运行js的网页耗尽全部内存而导致系统崩溃
3.6 解除引用:由于内存的限制,所以我们要优化内存占用,最佳策略就是执行代码只保存必要的数据,一旦数据不再用,最好通过将其值设置为null来释放对其的引用,这种方法称为解除引用
3.7 解除引用的适用范围:解除引用适用于大多数全局变量和全局对象的属性,局部变量会在它们离开执行环境时自动被解除引用
3.8 对解除引用需要声明的一点:解除引用并不代表收回该值所占的内存,解除引用的真正作用是让值脱离执行环境,以便垃圾收集器下次运行时将其收回
js 变量 作用域及内存的更多相关文章
- 第一百零六节,JavaScript变量作用域及内存
JavaScript变量作用域及内存 学习要点: 1.变量及作用域 2.内存问题 JavaScript的变量与其他语言的变量有很大区别.JavaScript变量是松散型的(不强制类型)本质,决定了它只 ...
- [刘阳Java]_步步窥探JS变量作用域
今天的这个文章题目名称甚是让人会突发异想.JS变量作用域是务必需要搞懂的,单从面试过程就会让面试者烧脑壳.所以,我们还是写一篇关于JS变量作用域的技术专题,让所有小伙伴能够借此文章去整理JS的基础学习 ...
- javaScript的闭包 js变量作用域
js的闭包 js的变量作用域: var a=90; //定义一个全局变量 function test(){ a=123; //使用外层的 a变量 } test(); document.write(&q ...
- 浅谈javascript中变量作用域和内存(2)
1.无块级作用域 javascript没有块级作用域,这会让其他程序员在理解js代码上很痛苦.在其他很多语言,比如C,大括号括起来的代码块都有自己的作用域 举个例子 if(true) { var na ...
- 原型模式故事链(5)--JS变量作用域、作用域链、闭包
上一章 JS执行上下文.变量提升.函数声明 传送门:https://segmentfault.com/a/11... 本次我们主要讲讲变量作用域和闭包变量作用域:顾名思义:变量起作用的范围.变量分为全 ...
- 解释JS变量作用域的范例
JS的变量作用域只有两种:全局作用域与函数作用域. 用var声明的变量不能简单的说是属于函数作用域,应该是说属于其最近的作用域. var a = 10; function test(){ var a; ...
- 浅谈js变量作用域
变量的作用域也是前端面试题常考的一个问题,掌握下面几个规律可以帮你更好的理解js的作用域. 1.作用域优先级遵循就近原则,函数内部的作用域优先级大于外部 var a=456; var b=111; f ...
- js变量作用域--变量提升
1.JS作用域 在ES5中,js只有两种形式的作用域:全局作用域和函数作用域,在ES6中,新增了一个块级作用域(最近的大括号涵盖的范围),但是仅限于let方式申明的变量. 2.变量声明 var x; ...
- JS变量作用域与解构赋值
用var变量是有作用域的 变量在函数内部声明时,那么该变量只属于整个函数体,函数外不可调用 当两个不同的函数里,使用了用一个相同的变量名,二者不互相影响,相互独立 遇到嵌套函数时,外部函数不可调用内部 ...
随机推荐
- spring c3po 连接mysql,sqlserver
1 连接mysql (1) http://wenku.it168.com/d_000096351.shtml 2 连接sqlserver (1)http://blog.csdn.net/vinep ...
- github中删除一个repository
(1) 首先进入相应的repository,然后点击setting 2,点击 delete the repository (3) 输入要删除的repository名字,即可删除
- C#控制台窗口居中显示(转)
private struct RECT { public int left, top, right, bottom; } [DllImport("kernel32.dll", Se ...
- ELK之在windows安装filebeat收集日志
登录官方网站下载filebeat的windows客户端 https://www.elastic.co/downloads/beats 下载压缩包,无需解压 修改配置文件filebeat.yml 其余设 ...
- hdu5266 pog loves szh III 【LCA】【倍增】
Pog and Szh are playing games. Firstly Pog draw a tree on the paper. Here we define 1 as the root of ...
- HDU 3182 - Hamburger Magi - [状压DP]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3182 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...
- CCCC L2-013. 红色警报 连通分量
题解:将问题转化成连通分量.每次失去一座城市,切断其所有的边,算一次现在的连通分量.若增量大于1,则发出警报. 至于如何算连通分量,直接用tarjan模板 坑://我昨天晚上半夜敲的模板,把一个算所有 ...
- cordova-ios 升级到4.4.0 无法真机跑iOS8 报错: dyld`dyld_fatal_error: -> 0x120085088 <+0>: brk #0x3
项目进入测试阶段,马上要上线了,同事拿了自己的iOS8系统5s跑真机,无缘无故报错,之前跑她的手机完全没有问题的.Xcode 8.x中最低部署版本是iOS8.0,按理说完全能够跑真机的. 但是报了一个 ...
- java正则表达式使用
用正则表达式进行字符串校验,截取十分方便,项目开发中灵活的使用正则表达式能让你的代码简洁优雅并且不易出错.在实际的应用中,掌握以下几点知识就可以应付绝大多数的开发场景了. 1. 字符串开始结束匹配:^ ...
- 一句替换bbcode
$message=preg_replace('/\[[^\[\]]{1,}\]/','',$message);