变量

ECMAScript变量有两种不同数据类型的值,分别是基本类型和引用类型,两者的不同在于基本类型值是简单的数据段,引用类型值一般指由多个值构成的对象

基本类型

基本数据类型包括5种:Undefined、Null、Boolean、Number、String,基本数据类型是按值访问的,操作的是变量实际的值

引用类型

引用类型的值保存在内存中,因为JavaScript不允许直接访问内存位置,所以我们不能直接操作对象的内存空间,而是操作对象的引用,所以说引用类型的值是按引用访问的。

这里指的是一般的赋值操作,当给对象添加属性时,操作的是实际的对象


动态添加属性

引用类型的值可以动态添加属性,而基本类型不可以

var obj = new Object();

obj.name = "xiaoxiao";

alert(obj.name);  //"xiaoxiao"

var name = "xiaoxiao";

name.sex = "男";

alert(name.sex); //undefined

复制变量值

基本类型的值进行复制的时候,会在新变量创建新值作为原来变量的副本,新变量和原变量彼此独立,进行的操作不会相互影响

引用类型的值进行复制的时候,原变量进行复制的是一个指向存储在堆中一个对象的指针,所以两个变量指向的是同一个对象

基本类型存储位置在栈,引用类型存储位置在堆

var obj1 = new Object();
var obj2 = obj1;
obj1.name = "xiaoxiao";
alert(obj2.name); //"xiaoxiao";

传递参数

不管是基本类型的值还是引用类型的值,在给函数传递参数时,都是按值传递。

进行按值传递也就代表着给参数传值和给变量复制值进行一样的操作,基本类型操作栈,每个变量都是独立的;引用类型操作堆,每个变量代表一个指向堆内的指针,引用同一个对象。

基本类型的值进行参数传递时和复制变量值时一样,把值传递给了函数的一个局部变量(arguments对象的一个元素)

引用类型的值进行参数传递时,传给局部变量的是原对象的地址而不是复制时的指针,所以在函数内进行的操作会影响原对象


类型检测

检测基本类型时可以用typeof操作符,检测引用类型时可以用instanceof操作符。

var a = "xiaoxiao";

alert(typeof a); //string

var obj = new Object();

alert(obj instanceof Object); //true;

JavaScript基础知识整理(变量)的更多相关文章

  1. JavaScript基础知识整理

    只整理基础知识中关键技术,旨在系统性的学习和备忘. 1.在 JScript 中 null 和 undefined 的主要区别是 null 的操作象数字 0,而 undefined 的操作象特殊值NaN ...

  2. JavaScript基础知识整理(2)

    15.处理图像 注意:(1)在写js文件时,尽量将函数的声明往后写,将函数调用写在前面,这样能够使代码结构很清晰. (2)一个网页中翻转器一般超过3个,所以使用for循环减少重复使用翻转器代码的次数. ...

  3. Javascript 基础知识整理

    Javascript的作用 表单验证,减轻服务器压力 添加页面动画效果 动态更改页面内容 Ajax网络请求(异步加载数据) -它属于前端的核心,主要用来控制和重新调整DOM,通过修改DOM结构,从而达 ...

  4. JavaScript基础知识整理(1)

    粗略理解,努力入门中 1.在html中引入外部脚本:  <script src="filename.js"></script> 2.注释:  多于一行的长注 ...

  5. JavaScript基础知识整理(1)数组

    第一:创建. 1,var arr= new Array(); //数组为空.长度为0. arr[0]="apple"; arr[1]="orange"; arr ...

  6. javascript基础知识整理(不定时更新)

    1.js中真与假的定义: 真:true,非零数字,非空字符串,非空对象 假:false,数字零,空字符串,空对象(null),undefined 2.使用for循环对json进行循环操作 for(va ...

  7. Kali Linux渗透基础知识整理(二)漏洞扫描

    Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...

  8. 【OGG】OGG基础知识整理

    [OGG]OGG基础知识整理 一.GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与 ...

  9. JavaScript 基础知识 - BOM篇

    前言 本篇文章是JavaScript基础知识的BOM篇,如果前面的<JavaScript基础知识-DOM篇>看完了,现在就可以学习BOM了. 注意: 所有的案例都在这里链接: 提取密码密码 ...

  10. Javascript基础知识总结一

    Javascript基础知识总结一 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...

随机推荐

  1. 初学银河麒麟linux笔记 第一章 虚拟机、麒麟系统、QT安装与运行

    由于手头一个项目的QT软件开发需要在银河麒麟系统上运行,借此机会开始从头学习linux系统 首先下载虚拟机VMware 16和麒麟系统iso,这里参考的 https://blog.51cto.com/ ...

  2. OS-lab4

    OS-lab4 系统调用 系统调用的流程 按照上述的流程逐个分析. user/syscall_lib.c 这个文件位于user文件夹下,也就是用户程序可以调用的函数,相当于操作系统提供给用户程序的一些 ...

  3. C#中定时任务被阻塞问题

    目录 解决一个C#中定时任务被阻塞问题 1.摘要 2.C#中定时任务的最简方法 3.定时任务阻塞现象 4.阻塞现象原因分析 5.问题解决 1.摘要 本文会介绍一个C#中最简单定时任务的使用方法,以及会 ...

  4. Hadoop完全分布式开发配置流程

    完全分布式开发 整体流程 1.准备3台纯净虚拟机 2.修改每台ip,主机名,主机映射,关闭防火墙 3.安装jdk和hadoop,配置环境变量 4.集群分发脚本编写 5.集群配置 6.ssh免密登录 7 ...

  5. (原创)odoo14下qweb模板的前端与后端语法区别

    1.后端(qweb打包) 后端使用t-inherit 指定继承的模板,使用t-inherit-mode 指定继承的模式,使用xpath定位标记,使用position指定扩展位置. 2.前端 前端仍旧使 ...

  6. 直播软件搭建,姓名,身份证input验证过滤

    直播软件搭建,姓名,身份证input验证过滤 姓名验证:需求,可输入英文.汉字 for(let i=0;i<e.length;i++){  if(/^[a-zA-Z\u4e00-\u9fa5]+ ...

  7. 给含有关键词的label着色

    给含有关键词的label着色 FineFileType() { let arr = document.querySelectorAll('.el-checkbox__label'); for (let ...

  8. 关于 map 的迭代器

    今天遇到一个问题 CountCompileResult(const LIST_MAP & rfLmCompileWafers) {        for (auto itr = rfLmCom ...

  9. flutter Color和colors

    "Color(颜色)"是我们在设置应用程序界面样式时最常用到的属性. Flutter 中颜色设置的方式有很多种,其中最常用的有下列几种: Color c1 = Color(0xFF ...

  10. Wordpress 漏洞利用与后渗透

    [作业]ColddBox 靶场 Wordpress 漏洞利用与后渗透. 突破口 渗透这类 CMS 网站时,不要上来就狂扫,它大部分目录都是固定的,开源去看对应版本,商业的找几篇文章.特别 注意的是一定 ...