js基本语法之 值类型(数据类型)(变量类型)
一.不可改变的原始值(栈数据)(五个)
数字(number),字符串(string),布尔值(boolean),undefined,null
其中;undefined是未定义的意思,而null是空的意思,他们俩的区别在于,null有值,不过这个值是空值,而undefined是未定义,完全没有值的意思。null一般用作占位。
var a = 4;
var b = a;
a = 10;
console.log(b);//
//原始值是把一个值a放到另一个值b里面,改了第一个值a,第二个之值b不变
二.引用值(堆数据)
数组(array),对象(object),函数(function)
注意:只要对变量进行赋值就会进行内存的重新申请
1.
var arr = [1, 2];
var arr1=arr;
arr.push(3);
console.log(arr1); //[1, 2, 3]
//引用值时把第一个值放到第二个值里面,改变第一个值,第二个值也改变
//引用值是在栈内存里面存放堆的地址,拷贝的是地址,所以改变了arr,实际上是改变了arr指向的地址内存放的内容,而arr和arr1指向同一个地址,故arr1也跟着变
|
地址 |
变量 |
存储值 |
|
0x0001 |
arr |
[1,2] [1,2,3] <--arr.push(3) |
|
0x0002 |
arr1 |
0x0001 |
2.
var arr = [1,2];
var arr1 = arr;
arr = [1,3];
console.log(arr1);//[1,2];
//arr = [1,3]实际上是在堆内另建了一个地址,arr指向了新的地址,而arr1还是指向原来的地址,故arr1值不变
|
地址 |
变量 |
存储值 |
|
0x0001 |
arr |
[1,2] |
|
0x0002 |
arr1 |
0x0001 |
|
0x0003 |
arr |
[1,3] |
3.要避免使用连续赋值符号:下面举两个例子
var a = {n:1};
var b = a;
a.n= a={m:1};
console.log(a);//{m:1}
console.log(b);//{n:{m:1}}
1.var a = {n:1},在内存中申请两个地址,分别存放a和n;
2.var b = a;申请一个地址存放b,值指向a的地址;
3.a.n= a={m:1};
(1)(这里对变量进行了赋值,因此要重新申请内存)先申请了内存地址n(0x0004)和a(0x0005);由于n值占用了新的内存,故0x0001处 存储值由n:0x0002变为n:0x0004;
(2)赋值;a={m:1},申请m地址(0x0006),
因此:a : {m:0x0006}--->{m:1}
b: {0x0001}--->{n:0x0004}---->{ n:0x0005}---->{n:{m:0x0006}}--->{n:{m:1}}
|
地址 |
变量 |
存储值 |
|
0x0001 |
a (1) |
n:0x0002 n:0x0004 ---(1) |
|
0x0002 |
-n- (1) |
1 |
|
0x0003 |
b |
0x0001 |
|
0x0004 |
n (1) |
0x0005 |
|
0x0005 |
a (1) |
m:0x0006 (2) |
|
0x0006 |
m (2) |
1 (2) |
var a = {n:1};
var b = a;
a={m:1};//a重新赋值,换了一个房间,b仍然指向原来的房间(地址)
a.n =a;
console.log(a);//{m:1,n:{m:1,n:{..}}}//一直循环
console.log(b);//{n:1}
js基本语法之 值类型(数据类型)(变量类型)的更多相关文章
- python限定方法参数类型、返回值类型、变量类型等
typing模块的作用 自python3.5开始,PEP484为python引入了类型注解(type hints) 类型检查,防止运行时出现参数和返回值类型.变量类型不符合. 作为开发文档附加说明,方 ...
- js面试题知识点全解(一变量类型和计算)
1.js中使用typeof能得到哪些类型 2.何时使用===和== 3.js中的内置函数 4.js变量按存储方式区分为哪些类型,并描述其特点 5.如何理解json 以下对这些问题的知识点做一些总结: ...
- js是这样判断值的数据类型的
js如何判定给定值的数据类型? typeof typeof "a" // "string" typeof 1 // "number" typ ...
- js技术之运用"typeof()"运算符校验变量类型
一.简介 typeof();个人的理解就是可以判断出对应的变量类型,而且是用统一的类型 如:数字,小数等..... 都用Number来表示 而:所有对象都用object表示 二.探索到 typeof的 ...
- JavaScript总体的介绍【JavaScript介绍、定义函数方式、对象类型、变量类型】
什么是JavaScript? 我们可以从几个方面去说JavaScript是什么: 基于对象 javaScript中内置了许多对象供我们使用[String.Date.Array]等等 javaScrip ...
- C#中null值属于什么变量类型
今天学习发现有段代码的输出结果有些理解不了,如图1,输出的结果全部为 false: 图1 后来和同事讨论研究了一下才明白,原来是这样:↓ class Program { static void Mai ...
- js中typeof可以准确判断哪些变量类型
typeof 运算符返回一个用来表示表达式的数据类型的字符串. 可能的字符串有:"number"."string"."boolean".& ...
- 深入理解PHP内核(五)变量及数据类型-变量的结构和类型
原文链接:http://www.orlion.ga/238/ 编程语言的类型可以分为强类型和弱类型两种,PHP是弱类型语言,但是C语言是强类型语言.在官网PHP实现内部,所有变量使用同一种数据结构(z ...
- Java 学习(4):基本数据类型,变量类型
目录 --- 基本数据类型 --- 变量类型 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用 ...
随机推荐
- uoj#418. 【集训队作业2018】三角形(线段树合并)
传送门 好迷啊--膜一下ljz 考虑每个操作,如果把操作按先后顺序放到序列上的话,操作一就是把\(w_i\)的石子放到某个节点,那么就是在序列末端加入\(w_i\),然后根据贪心肯定要把它所有儿子的石 ...
- -webkit-line-clamp 兼容性问题
1.一般情况下,想要实现文本超过几行后显示省略号的css. color: #101010; font-size: 14px; text-align: justify; font-family: Sou ...
- 如何在Linux服务器上部署禅道
最近换了新的项目团队,由于新团队比较年轻化,没有实行正规的项目管理,于是我自告奋勇要为团队管理出一份力,帮助团队建立敏捷化的项目管理,经过多方考究和对比后,选择了目前较受欢迎的开源项目管理软件:禅道. ...
- 笔记-JavaWeb学习之旅4
JDBC: 概念:Java DataBase Connectivity Java 数据库连接,Java语言操作数据库 本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口,各个数 ...
- 2019最好用的自动化测试工具Top 10,果断收藏!
经常有人在公众号留言或是后台问我,做自动化测试用哪个工具好,或是学哪门编程语言好呢? 这个时候总是无奈的说: 你应该学习Python 或是Java. 你应该掌握Selenium. 又或者你需要学会jm ...
- PostgreSQL - 查询表结构和索引信息
前言 PostgreSQL的表一般都是建立在public这个schema下的,假如现在有个数据表t_student,可以用以下几种方式来查询表结构和索引信息. 使用\d元命令查看表字段信息和索引信息 ...
- Redis - Windows平台下怎么切换db并且清理数据
Redis 本身支持16个数据库(0~15),通过 数据库id 设置,默认为0.在Windows平台下可以通过启动redis-cli.exe来进入客户端,客户端默认连接数据库0,在客户端里可以输入各种 ...
- 牛客寒假6-J.迷宫
链接:https://ac.nowcoder.com/acm/contest/332/J 题意: 你在一个 n 行 m 列的网格迷宫中,迷宫的每一格要么为空,要么有一个障碍. 你当前在第 r 行第 c ...
- 记录一下filter
filter是什么,如它的字面意思,就是拦截器.它可以在request到达相关资源之前,比如servlet之前先处理requeset,也可以拦截或处理从某个资源比如servlet发出的response ...
- 20170308web作业1
代码20170308001: <%@ page language="java" import="java.util.*" pageEncoding=&qu ...