【js高程学习笔记】关于变量值和函数参数
变量包含了两种不同类型的值:
- 基本类型 (Undefined、null、Boolean、Number、string都属于基本类型)
- 引用类型 (对象)
两种值在赋值上不同的是:
- 将一个引用类型的值(对象)赋值给一个变量,可以为其添加/删除属性和方法。
但如果是一个基本类型的值是不可以这样的。
var person = new Object();
person.name = "Cat.y";
console.log('person.name = ' + person.name);
- 将一个基本类型的值赋给一个变量,那么是在这个变量上创建一个新值,改变新的变量里面的值,原本变量中的值不受影响
var num1 = 5;
var num2 = num1;
console.log('num1 = ' + num1 + '\n' + 'num2 = ' + num2); //这里应该输出: num1 = 5 num2 = 5
num2 = 10;
console.log('改变num2的值后:\n')
console.log('num1 = ' + num1 + '\n' + 'num2 = ' + num2); //这里应该输出: num1 = 5 num2 = 10
console.log('\n\n');
- 将一个对象赋值给一个变量,它赋的值实际上是这个内存空间的指向地址。
可以理解为,创建了一个对象,就相当于开了一个房,你往这个对象里添加/删除方法、属性、值,就相当于在这个房间内放置/取出东西,
而变量赋的值实际上就是这个房间的门牌号。
因此,两个变量操作的都是同一个内存里的东西,所以,obj1改变了,obj2也会相应的变化
var obj1 = new Object();
var obj2 = obj1;
obj2.name = 'Cat.y';
console.log('obj1.name = ' + obj1.name + '\n' + 'obj2.name = ' + obj2.name );
// obj1.name = Cat.y obj2.name = Cat.y
函数中的参数相当于一个局部的变量
function addTen(num){
num += 10;
return num;
}
var count = 10;
var result = addTen(count);
//输出结果应该为: count = 10 result = 20;
console.log('count = ' + count + '\n' + 'result = ' + result + '\n');
例子中将一个数值赋值给变量count,再新建一个变量result, result 的值是调用了函数addTen并将count做为参数传了进去而返回的值
也就是说,result的值是经过addTen函数计算而返回的一个新的值;
函数外,count并不会改变,因为它是相当于变量count的值赋值给了局部变量num,num改变的值是不会影响到count的
再例:
function setName(obj){
obj.name = 'Cat.u';
obj = new Object(); //在函数内重新给obj赋值了一个新的对象,指向的地址改变
obj.name = 'Tuanzi.y'; //影响不到函数外的值
}
var person = new Object();
console.log('person.name = ' + person.name + '\n'); //这时候还没给peron.name赋值
setName(person);
console.log('person.name = ' + person.name + '\n'); //person.name = Cat.u
如果调用一个函数时,将一个对象作为参数传了进去,这里要注意的是,它传递的是“指向这个内存的地址”,是地址而不是值,也就是“门牌号”
如果在函数内重新给obj变量赋值一个新的对象,obj指向的内存地址改变,那之后更改对象内的属性,对函数外是没影响的
【js高程学习笔记】关于变量值和函数参数的更多相关文章
- 【js高程学习笔记】Object类型
创建一组Object的实例的方式有两种: 方法一: var person = new Object(); person.name = '团子'; person.race = '猫'; person.s ...
- Python学习笔记(2.1)函数参数练习
关键字参数 和 命名关键字参数 # -*- coding: utf-8 -*- def print_scores(**kw): print(' Name Score') print('-------- ...
- Python3学习笔记(十一):函数参数详解
一.位置参数 根据参数的位置来传递参数,调用函数时,传递的参数顺序和个数必须和定义时完全一致 # 定义函数 def man(name, age): print("My name is %s, ...
- js再学习笔记
#js再学习笔记 ##基本 1.js严格区分大小写 2.js末尾的分号可加,也可不加 3.六种数据类型(使用typeof来检验数据的类型) `typeof` - undefined: `var ...
- js获取jsp中的变量值
js获取jsp中的变量值,有两种方式: 1.jsp标签获取属性 var message = '<%=request.getAttribute("message")%>' ...
- JS数组学习笔记
原文:JS数组学习笔记 最近在备课数组,发现很多ES5的方法平时很少用到.细节比较多,自己做了大量例子和整理,希望对大家了解JavaScript中的Array有所帮助. 概念 数组是值的有序集合.每个 ...
- ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring
接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...
- python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法
python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法 在Python中字符串处理函数里有三个去空格(包括'\n', '\r', '\t', ' ')的函数 ...
- APUE学习笔记——10.9 信号发送函数kill、 raise、alarm、pause
转载注明出处:Windeal学习笔记 kil和raise kill()用来向进程或进程组发送信号 raise()用来向自身进程发送信号. #include <signal.h> int k ...
随机推荐
- Manjaro搭建无密访问samba服务器
为了方便Linux在Windows平台下开发,搭建Manjaro无密访问samba服务器 后面加了Windows下搭建samba方法 安装smb服务器 我用的是Manjaro gnome 18,需要安 ...
- 20175312 2018-2019-2 《Java程序设计》第8周学习总结
20175312 2018-2019-2 <Java程序设计>第8周学习总结 教材学习内容总结 已依照蓝墨云班课的要求完成了第十章的学习,主要的学习渠道是PPT,和书的课后习题. 总结如下 ...
- wireshark基础学习—第一部分wireshark的基础知识
1.Wireshark主窗口 Wireshark的主窗口如下所示 2.每个面板的内容 Packet List(数据包列表): 最上面的面板用表格显示了当前不惑文件中的所有数据包,其中包括了数据包序号. ...
- python-Word模板填充-docxtpl
docxtpl 按指定的word模板填充内容 安装 pip install docxtpl 示例 from docxtpl import DocxTemplate data_dic = { 't1': ...
- R语言常用函数:交集intersect、并集union、找不同setdiff、判断相同setequal
在R语言进行数据分析时,经常需要找不同组间的相同和不同,那你应该掌握如下几个函数,让你事半功倍. 交集intersect两个向量的交集,集合可以是数字.字符串等 # 两个数值向量取交集intersec ...
- stylus入门学习笔记
title: stylus入门学习笔记 date: 2018-09-06 17:35:28 tags: [stylus] description: 学习到 vue, 有人推荐使用 stylus 这个 ...
- nrf52832板子焊接后总结的经验
将之前打的nrf52832的板子拿到手了,经过一番焊接和调试后,发现了一些问题,因为是第一次画板焊接调试,很多地方做的不好,现在将自己的一些经验总结如下: 1 在制板之前,丝印层有必要好好的检查,建议 ...
- python小技巧---打印出不同颜色的输出
在调试代码时打印常常一种颜色,找个东西真的是很难,在一次听金角大王的视频中听到了个方法,也是喀什使用了,本来不打算做记录了,可是稍微有几天不用,还得翻之前的代码,找着也是听麻烦的,现在在这里做个记录 ...
- 删除链表的倒数第N个节点(java实现)
题目: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链 ...
- 手动调用dubbo接口
1. 打开命令窗口,telnet IP地址 dubbo端口号 telnet 127.0.0.1 28001 2. 找到service ls 列出所有服务 dubbo>cd com.faaaaa. ...