JavaScript基础知识整理(变量)
变量
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基础知识整理(变量)的更多相关文章
- JavaScript基础知识整理
只整理基础知识中关键技术,旨在系统性的学习和备忘. 1.在 JScript 中 null 和 undefined 的主要区别是 null 的操作象数字 0,而 undefined 的操作象特殊值NaN ...
- JavaScript基础知识整理(2)
15.处理图像 注意:(1)在写js文件时,尽量将函数的声明往后写,将函数调用写在前面,这样能够使代码结构很清晰. (2)一个网页中翻转器一般超过3个,所以使用for循环减少重复使用翻转器代码的次数. ...
- Javascript 基础知识整理
Javascript的作用 表单验证,减轻服务器压力 添加页面动画效果 动态更改页面内容 Ajax网络请求(异步加载数据) -它属于前端的核心,主要用来控制和重新调整DOM,通过修改DOM结构,从而达 ...
- JavaScript基础知识整理(1)
粗略理解,努力入门中 1.在html中引入外部脚本: <script src="filename.js"></script> 2.注释: 多于一行的长注 ...
- JavaScript基础知识整理(1)数组
第一:创建. 1,var arr= new Array(); //数组为空.长度为0. arr[0]="apple"; arr[1]="orange"; arr ...
- javascript基础知识整理(不定时更新)
1.js中真与假的定义: 真:true,非零数字,非空字符串,非空对象 假:false,数字零,空字符串,空对象(null),undefined 2.使用for循环对json进行循环操作 for(va ...
- Kali Linux渗透基础知识整理(二)漏洞扫描
Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...
- 【OGG】OGG基础知识整理
[OGG]OGG基础知识整理 一.GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与 ...
- JavaScript 基础知识 - BOM篇
前言 本篇文章是JavaScript基础知识的BOM篇,如果前面的<JavaScript基础知识-DOM篇>看完了,现在就可以学习BOM了. 注意: 所有的案例都在这里链接: 提取密码密码 ...
- Javascript基础知识总结一
Javascript基础知识总结一 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...
随机推荐
- openframeworks 设置不显示控制台窗口
1.设置Linker 下的System->选择Windows 2.设置入口函数,然后编译就可以了 int APIENTRY wWinMain(_In_ HINSTANCE hInstance, ...
- Windows 批量测试 ip:port 是否通畅
使用 telnet + cmd 脚本处理: @echo off start cmd /k "telnet 10.2.3.29 3000" start cmd /k "te ...
- SDN第三次实验
实验3:OpenFlow协议分析实践 实验目的 能够运用 wireshark 对 OpenFlow 协议数据交互过程进行抓包: 能够借助包解析工具,分析与解释 OpenFlow协议的数据包交互过程与机 ...
- nginx 结合tomcat 双机热备
相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人未必了解. 说到反向代理,可能很多人都听说,但具体什么是反向代理,很多人估计就不清楚了 ...
- Didn't find class "org.apache.http.ProtocolVersion
使用volley时报"Didn't find class "org.apache.http.ProtocolVersion" 今天在运行签名好的apk 在android9 ...
- 2.mysql存储过程、存储函数与触发器
-- 创建一个存储过程DELIMITER $CREATE PROCEDURE 存储过程名称(返回类型 参数名1 参数类型1, ....) [ ...... ]BEGIN -- 具体组成存储过程的SQL ...
- thirty-two(模型点击展示)react-three-fiber
模型点击蒙版展示 点击展示目的(用户需要看见模型中更加多的内容信息) 使用技术 ThreeJs.React-three-fiber.React-three-drei.React.css 整体思路: ...
- @JsonFormat
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8" 不管是前端传后台,还是后台传前端, ...
- VS Code 快速下载
最近在官网下载Visual Studio Code时,下载速度特别慢,经过搜索后发现,将下载地址前部分更换为国内地址后,下载速度飞快. 具体步骤如下: VSCodeSetup-x64-1.72.0 官 ...
- MacOS系统下selenium之火狐浏览器驱动firefoxdriver安装
https://blog.csdn.net/weixin_44107321/article/details/106452468