js基本语法之 值类型(数据类型)(变量类型)

一.不可改变的原始值(栈数据)(五个)

数字(number),字符串(string),布尔值(boolean),undefined,null

其中;undefined是未定义的意思,而null是空的意思,他们俩的区别在于,null有值,不过这个值是空值,而undefined是未定义,完全没有值的意思。null一般用作占位。

var a = 4;
var b = a;
a = 10;
console.log(b);//4
//原始值是把一个值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)

原文地址:https://www.cnblogs.com/freefy/p/9461394.html

时间: 2024-10-09 14:06:49

js基本语法之 值类型(数据类型)(变量类型)的相关文章

python限定方法参数类型、返回值类型、变量类型等

typing模块的作用 自python3.5开始,PEP484为python引入了类型注解(type hints) 类型检查,防止运行时出现参数和返回值类型.变量类型不符合. 作为开发文档附加说明,方便使用者调用时传入和返回参数类型. 该模块加入后并不会影响程序的运行,不会报正式的错误,只有提醒pycharm目前支持typing检查,参数类型错误会黄色提示 常用类型 int,long,float: 整型,长整形,浮点型 bool,str: 布尔型,字符串类型 List, Tuple, Dict,

js最基础知识回顾3(字符串拼接,数据类型,变量类型,变量作用域和闭包,运算符,流程控制,)

一.javaScript组成     1.ECMAScript:解释器.翻译 ---------------------------------------------------------几乎没有兼容性问题     2.DOM:Document Object Model --------操作HTML的能力----document--------有一些兼容性问题     3.BOM:Browser Object Model -------------浏览器---------------wind

js是这样判断值的数据类型的

js如何判定给定值的数据类型? typeof typeof "a" // "string" typeof 1 // "number" typeof true // "boolean" typeof {} // "object" typeof [] // "object" typeof null // "object" typeof function(){} // &q

说说javascript变量类型和变量类型检测

javascript是一种弱类型语言,它的典型例子就是即变量在使用的时候可以给它赋值任何类型.那么先来看下javascript都有那些变量类型已经它们的使用方法吧. 先来看看javascript都有那些类型吧: string --- 字符串number --- 数值boolean --- 布尔值undefined --- 未申明的变量 或 申明并未赋值null --- 空object  --- 对象function  --- 函数 这里比较有争议的是 function 类型到底要不要归属到变量类

js中typeof可以准确判断哪些变量类型

typeof 运算符返回一个用来表示表达式的数据类型的字符串.  可能的字符串有:"number"."string"."boolean"."object"."function" 和 "undefined". 常用返回值说明 表达式 返回值 typeof undefined 'undefined' typeof null 'object' typeof true 'boolean' typ

js字符串或则布尔值转换成数字类型的四种方法

1.parseInt() 2.parseFloat() 3.Number() 4.通过减法或者乘法把其他类型的值转换为数字类型 例子: // 转换成数字类型的4种方法 // 1.parseInt var a = '1.03'; var b = '1.01a'; var c = 'a1'; var d = true; var e = false; console.log(parseInt(a)); // 1 小数字符串,使用parseInt会把小数取整 console.log(parseInt(b

变量类型|数据类型|统计特征|

生物统计学-描述统计 首先必须明确:生物实验的总体是无穷个,而研究人员做生物实验得到的数据永远是样本.因为不同类别的变量指向不同的统计方法,所以必须首先明确变量类型. 变量类型有: 其中,类别变量的本质是字符串,数值变量的本质是数值型,所以,虽然有些类别变量表现为数字,但将它们做运算的结果是没有任何意义的. 数据类型的分类依据有: 获取方式(观测数据:实验数据).衡量尺度(数值型数据:顺序数据:分类数据).属性(定性数据:定量数据).数学性质(离散数据:连续数据).....: 其中,二次数据需注

数据类型 变量

一.基本数据类型 1,基本数据类型       8种:byte,short,int,long,char,float,double,boolean 整型:byte,short,int,long           byte:字节型 8位  -128 -- 127 (-2^7--2^7-1)       short:短整型 16  -2^15--2^15-1       int:整型  32        long:长整型 64 浮点型:float,double          float:单精度

shell编程变量及变量类型

编程语言:包括机器语言.汇编语言.{高级语言[静态语言(编译型语言,一般为强类型变量,需要发布为可执行程序,C.C++.Java,C#)和动态语言(解释型语言,一般为弱类型语言,不需要发布为可执行程序,是一边执行一边解释,Asp,asp.net,php,shell,python.perl)]} 面向对象:解决对象之间的动作,主要适合开发大型程序java,python,c++,perl 面向过程:主要解决过程,主要适合开发小型程序shell,c 变量:是内存空间,是命名的内存空间,存储数据的存储格