JS-变量存储
1.存储(变量)
JS中变量是存在栈内存中
JS中的内存分两种:栈内存、堆内存
栈内存:存放变量
堆内存:存代码块(object和function)
var fn=function()和function fn()这两个定义函数是不一样的
JS特殊在它是一个弱类型语言
在定义变量的时候没有明确的指明它的数据类型,而是由后面赋的值决定它的类型
var a="" var=12; var a=[];var a={}
java是强类型语言
定义变量的时候就指明它的数据类型,后面的赋值就不能随便赋值了,必须和数据类型保持一致
string a="12"; number a=12; boolean a=true;
JS内存存放机制
1)基本数据类型:string number boolean undefined null
如果变量后面的值是基本数据,就直接存在栈内存。栈里面要求变量不能重名,如果重名就会覆盖前者
2)引用数据类型:object array function
如果变量后面是引用数据类型,将后面的代码块存在堆内存中,然后将堆内存中的内存地址赋值给前面的变量
3)其他:Data Errey Math
备注:浏览器在执行js代码前,找出所有的关键字var和function将定义的变量存在内存中,存放完毕之后按照自上向下的顺序一步一步的执行,当使用某个变量的时候(console.log()),就会向内存查找,有就使用,没有就会报错(xxx is not defined),如果是赋值,就相当于给window添加了一个属性且赋值
2.销毁内存
浏览器自身每经一段时间,自动去检测js中没有用的内存,把它销毁掉
JS中的人为销毁变量,给这个变量赋值为null a=null;null的本质是空指针
内存销毁的顺序是:先存后销
JS-变量存储的更多相关文章
- PHP基础班初学心得:脑洞实验-JS变量存储函数与return的一些问题
本人刚参加PHP基础班培训第一天,由于之前毫无基础,分享的心得可能不规范,方法也许也"旁门左道",不能保证质量,只作自己总结学习,也希望能帮助到同样是初学者的朋友们,共同进步. 在 ...
- JavaScript变量存储浅析(一)
Hello! 上一篇关于JS中函数传参(http://www.cnblogs.com/souvenir/p/4969092.html)的介绍中提到了JS的另外一个基本概念:JS变量存储, 今天我们就用 ...
- JS规则 多样化的我(变量赋值)我们使用"="号给变量存储内容,你可以把任何东西存储在变量里,如数值、字符串、布尔值等,
多样化的我(变量赋值) 我们可以把变量看做一个盒子,盒子用来存放物品,那如何在变量中存储内容呢? 我们使用"="号给变量存储内容,看下面的语句: var mynum = 5 ; / ...
- javascirpt对象运用与JS变量
abcdefghijklmnopqrstuvwyz String 对象方法 charAt() 方法可返回指定位置的字符.stringObject.charAt(index)(index从0开始)[ht ...
- js变量以及其作用域详解
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp73 一.变量的类型 Javascript和Java.C这些语言不同 ...
- JavaScript变量存储浅析
var test=100; function foo(){ console.log(test);//undefined var test=200; console.log(test); } 我们明明定 ...
- js变量类型和计算
# js入门基础-变量类型和计算 ` --首先由于我使用了一个不太合格的markdown来编写来文章,所以在移动端阅读不要太方便,建议移动端使用横屏模式或pc端阅读,当然如果你有平板那是最好的. -- ...
- JS变量类型与计算
一.题目 1.JS中使用typeof能得到哪些类型? 2.何时使用===何时使用==? 3.JS中有哪些内置函数? 4.JS变量按照存储方式区分为哪些类型,并描述其特点? 5.如何理解JSON? 知识 ...
- 【repost】 JS变量重复声明以及忽略var 声明的问题及其背后的原理
JS的容错率很高,一些其他语言常见的小错误JS都能大度得包容,比如给一个方法传入超出预计的参数.在声明变量之前使用该变量(变量的声明提升解决了这个问题)等等,这里我们就要解剖一下JS变量重复声明以及当 ...
- 基础篇:8.如何定义变量?js变量有什么特点?
书接上文,废话不多说,直接进入正题,下面我们一起来讨论js中的变量那些事! 那什么是变量? 变量是存储信息的容器,可以存储任何类型的数据. 如何定义变量呢? 变量可以使用短名称,如x,y:也可以是长名 ...
随机推荐
- LoginServlet类
import cn.itcast.dao.UserDao; import cn.itcast.domain.User; import javax.servlet.ServletException; i ...
- 学习Java Day 5
今天看视频学习了一下eclipse的使用方法,解决了昨天运行不了的结果,并尝试了一下java的输入:
- TreeMap排序Comparator()重写
package map_;import java.util.Comparator;import java.util.TreeMap;/* * @author YAM */public class Tr ...
- 手机在线编程软件Anycodes
下载地址:http://ys-f.ys168.com/608949803/V6gUhjk3V382275HM63/%E6%89%8B%E6%9C%BA%E7%BC%96%E7%A8%8B%E8%BD% ...
- RT-Thread Studio使用——创建工程并配置外部时钟(转)
硬件:正点原子阿波罗F429开发板,主控STM32F429IGT6,晶振25MHz. 软件:RT-Thread Studio RT-Thread版本:4.1.0 1.创建工程 根据所使用的硬件信息,配 ...
- 在Qt4中添加QSerialPort模块
在Qt5及以上的版本中提供了QSerialPort串口模块,如果想在Qt4版本中使用该模块,可以自行安装,但仅限于5.5以下的QSerialPort版本.下面就以qtserialport-openso ...
- RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!
错误原因:数据有的在cpu上有的在gpu上debug:断点到出错位置查看类型,或者打印`x.is_cuda`查看修改:将cpu上的数据通过`.to(device)`加载到gpu上
- BackTrader 简单BTC的SMA15回测DEMO
import time import requests import json import csv from requests.packages.urllib3 import disable_war ...
- grafana嵌入iframe,去除菜单和上方工具条
1.首先修改grafana的配置:etc/grafana/grafana.ini,修改下面这两个配置为true 2.由于项目使用了nginx,要启用https,需要修改下面这几个配置:(不需要启用ht ...
- Ubuntu系统安装搜狗拼音输入法
问题背景 Ubuntu是使用人数最多的Linux发行版之一,其丰富的生态广受各位种花家程序员小伙伴们的欢迎.对种花家小伙伴们来说,最重要的功能之一就是中文输入法了.但是Ubuntu自带的中文输入法效果 ...