js 变量以及函数传参
一、变量:
- 基本类型是变量对象重新创建一个新值给变量对象空间,虽然是同一个值但是互不影响。
- 引用类型是也是将一个值重新赋值给新的变量空间,但是这个值是堆中对象的一个指针,新的变量和旧的变量指向是同一个对象。
如下:
- 基本类型
let num=;
let num1=num;
num=num+;
console.log(num,num1);
输出:

- 引用类型
let obj={};
let obj1=obj;
obj.name='tom';
console.log(obj,obj1);
输出:

总结:
- 基本类型在赋值新的变量的时候,是重新创建一个值给新的变量空间,旧的变量和新的变量互不影响。
- 引用类型的,在赋值新的变量,是将对象在堆中的内存指针赋值给新的变量空间,在改变一个变量的属性,直接影响另一个变量,也就是说他们指向的是同一个对象。
二、函数传参
无论是基本类型还是引用类型在函数传参都是按值传参。
也许大家都会有疑惑为什么变量要基本类型和引用类型 一个按值 一个按引用?
- 基本类型=>和变量赋值一样,将一个值传递函数的形参(局部变量),在函数内调用该变量,并改变并不会影响函数外的变量。因为这2个是不同的值互不影响。
test=(num)=>{
num+=;
console.log(num);
};
let testVal=;
test(testVal);
console.log(testVal);//2
- 引用类型,传递的是对象在堆中的内存地址值,而不是引用!!
testObj=(obj)=>{
obj=new Object();
obj.name='evil';
console.log(obj.name);
};
let testMyObj={name:'jack'};
testObj(testMyObj);
console.log(testMyObj.name);//jack
引用类型传递是对象的内存地址,而不是引用,如果是引用那么在函数testObj 在函数作用域中的局部变量obj在改变引用的时候,函数外层的testMyObj输出的name值应该是evil,而不是jack 所以显然传递的值即对象在堆中的内存地址。
js 变量以及函数传参的更多相关文章
- JS中的函数传参
前言: 函数分为有参有返回值,有参无返回值,无参无返回值,无参有返回值:那么对于无参数的函数你想使用函数的调用怎么办呢?如果你想封装一个代码,实现多种功能,但是形参大于实参或者实参大于形参又该如何?本 ...
- shell中的特殊变量和函数传参
shell中的特殊变量 $? :上一个命令的执行状态返回值 $#::参数的个数 $*:参数列表,所有的变量作为一个字符串 $@:参数列表,每个变量作为单个字符串 $1-9,${10}:位置参数 $$: ...
- 看似无参却有参-----JS中的函数传参
事件event JS的事件event是一个非常大的对象,不管是什么事件,事件的详情都会绑定到全局变量event中.这样做之所以安全,就是因为JS是单线程的. <html> <body ...
- 【JS学习笔记】函数传参
比如仅仅改变背景的颜色 函数传参:参数就是占位符. 那么在什么时候用传参呢?函数里定不下来的东西. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...
- c# 内存的具体表现- 通用类型系统 深拷贝 浅拷贝 函数传参
c# 通用类型系统 及变量在 深拷贝 浅拷贝 函数传参 中的深层次的表现 在编程中遇到了一些想不到的异常,跟踪发现,自己对于c#变量在内存上的表现理解有偏差,系统的学习并通过代码实验梳理了各种情况下, ...
- 函数传参,改变Div任意属性的值&&图片列表:鼠标移入/移出改变图片透明度
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- x64汇编第三讲,64位调用约定与函数传参.
目录 x64汇编第三讲,64位调用约定与函数传参. 一丶复习X86传参 二丶x64汇编 2.1汇编详解 x64汇编第三讲,64位调用约定与函数传参. 一丶复习X86传参 在x86下我们汇编的传参如下: ...
- javascript-初级-day05js函数传参
JS基础-01 函数传参.参数类型-1 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Conten ...
- VC与JavaScript交互(三) --- CWebPage类调用javascript函数(给js函数传参,并取得返回值)
①需要一个别人写好的类CWebPage,将其对于的两个文件WebPage.h和WebPage.cpp添加到工程中. ②添加WebBrowser控件,在视图/对话框类的头文件中#include &quo ...
随机推荐
- 深入理解虚拟机、容器和 Hyper 技术
本文首先介绍了操作系统,然后引出容器技术以及虚拟机技术,最后介绍了 Docker 和 Hyper 技术.通过本文可以清楚地对三者有感性认识. 操作系统概述 我们可以把操作系统简化为: 操作系统 = 内 ...
- Ajax返回的数据存放到js数组
js定义数组比较简单: var array = [ ] ; 即可 今天记录一下 js 数组的常用规则: 1. b = [1,'da',"sdaf"]; //定义数组给数组添加默认 ...
- linux设置root密码&进入不了root
刚装的linux无法使用root需要初始化密码 1.设置密码 sudo passwd root 点击回车,然后输入两次你想设置的密码,比如123456 2.切换用户 su root 再输入你刚才设置的 ...
- 执行sudo supervisorctl reload报错ImportError: No module named supervisor.supervisord
由于yum install supervisor 会默认使用python2.6环境,首先要安装好python2.6的环境,然后修改以下文件首行为2.6即可 [root@VM_0_15_centos ~ ...
- maven将Jar安装进仓库
mvn install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.4 -Dpac ...
- 大数据之路【第十四篇】:数据挖掘--推荐算法(Mahout工具)
数据挖掘---推荐算法(Mahout工具) 一.简介 Apache顶级项目(2010.4) Hadoop上的开源机器学习库 可伸缩扩展的 Java库 推荐引擎(协同过滤).聚类和分类 二.机器学习介绍 ...
- 第4课,python 条件语句if用法
主题: 智能对话程序的设计 前言: 在编程中存在三大逻辑结构:顺序结构,分支结构(用条件语句if构成),循环结构.其中循环结构能完成,重复次数多,庞大的工作: 分支结构优势不在完成的多,但占有重要位置 ...
- python:函数的参数传递方法演示
""" 函数的参数传递方法演示 """ #1.位置传参 def normal(a, b, c): print("1.位置传参:&q ...
- vue SPA设计 history hash
<body> <h3>Histort api</h3> <a class="api a">a,html</a> < ...
- 通过对比ASCII编码来理解Unicode编码
Unicode是个规范,可以理解为一个索引表,世界上所有字符基本上在这个索引表中都能找到唯一一个数码与之对应,就像ASCII码表一样,也是一个规范,也可以看成是一个索引表,所有的英文字符都可以在这个索 ...