javascript中的计算题

一、js中的数据类型共六种:

值类型五种:Boolea   Number  String  Null  undefined

引用类型:Object ----三大引用类型:Object   Array  Function

题目1: var a = 100;

    var b = a;

      a = 200;

    console.log (b);

题目2: var a = {age : 20};

    var b = a;

    b.age = 21;

    console.log (a.age);

题目1的答案是 100,题目2的答案是21,

题目1是简单的值类型,在从一个变量向另一个变量赋值基本类型时,会在该变量上创建一个新值,然后再把该值复制到为新变量分配的位置上。

此时,a中保存的值为 100 ,当使用 a 来初始化 b 时,b 中保存的值也为100,但b中的100与a中的是完全独立的,该值只是a中的值的一个副本,此后,
这两个变量可以参加任何操作而相互不受影响。也就是说基本类型在赋值操作后,两个变量是相互不受影响的。

题目2是引用类型,当从一个变量向另一个变量赋值引用类型的值时,同样也会将存储在变量中的对象的值复制一份放到为新变量分配的空间中。

这时保存在变量中的是对象在堆内存中的地址,所以,与简单赋值不同,这个值的副本实际上是一个指针,而这个指针指向存储在堆内存的一个对象。那么赋值操作后,
两个变量都保存了同一个对象地址,则这两个变量指向了同一个对象。因此,改变其中任何一个变量,都会相互影响。

因此,引用类型的赋值其实是对象保存在栈区地址指针的赋值,因此两个变量指向同一个对象,任何的操作都会相互影响。

原文地址:https://www.cnblogs.com/zhaoxinmei-123/p/9046418.html

时间: 2024-11-06 09:28:19

javascript中的计算题的相关文章

JavaScript中解决计算精度丢失的问题

在做项目之前老师就给我们封装好了一个js文件,解决计算中丢失精度的一些函数,直接引用js文件就可以使用. eg: var numA = 0.1; var numB = 0.2; alert( numA + numB ); 出现结果:0.1 + 0.2 = 0.30000000000000004  为什么出现这个问题:计算机读懂的是二进制,而不是十进制,就是程序在进制转换时候丢失了精度. 解决问题代码: //除法函数,用来得到精确的除法结果 //说明:javascript的除法结果会有误差,在两个

javascript中关于数组的一些鄙视题

一.判断一个数组中是否有相同的元素 /* * 判断数组中是否有相同的元素的代码 */ // 方案一 function isRepeat1(arrs) { if(arrs.length > 0) { var s = arrs.join(","); for(var i = 0,ilen = arrs.length; i < ilen; i+=1) { if(s.replace(arrs[i],"").indexOf(arrs[i])>-1) { ret

关于JavaScript中计算精度丢失的问题

摘要: 由于计算机是用二进制来存储和处理数字,不能精确表示浮点数,而JavaScript中没有相应的封装类来处理浮点数运算,直接计算会导致运算精度丢失. 为了避免产生精度差异,把需要计算的数字升级(乘以10的n次幂)成计算机能够精确识别的整数,等计算完毕再降级(除以10的n次幂),这是大部分编程语言处理精度差异的通用方法. 关键词: 计算精度 四舍五入 四则运算 精度丢失 1. 疑惑 我们知道,几乎每种编程语言都提供了适合货币计算的类.例如C#提供了decimal,Java提供了BigDecim

JavaScript中使用arguments来实现不定参数的计算

在JavaScript中可以使用arguments对象来实现不定参数 例如:不定参数的相加实现 add(1,2)      ==>3 add(1,2,3)   ==>6 var add = function(){ var total = 0; for(var index = 0;index < arguments.length; index++){ total = total + arguments[index]; } return total; } alert("1加2的值是

前端要给力之:语句在JavaScript中的值

文件夹 文件夹 问题是语句有值吗 那么说你骗我咯 有啥米用呢 研究这个是不是闲得那个啥疼 ES5ES6有什么差异呢 结论是ES6是改了规则但更合理 最后不不过if语句 这两天在写语言精髓那本书的第三版,讨论到ES6跟ES5中间对"语句的值"的不同处理.正好Weibo上也有同学对这个问题有兴趣,所以专门整理了这篇. 写博客能够啰嗦点,写书就不行了.所以这篇文章跟书上能看到的还是会不一样的. 问题是:语句有值吗? 非常不幸.我们面临的的确是一门连语句都有值的语言.在JavaScript中.

URL地址中中文乱码详解(javascript中encodeURI和decodeURI方法、java.net.URLDecoder.encode、java.net.URLDecoder.decode)

引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生了,该如何解决呢?且听本文详细道来. 1.  问题的引出 在Restful的服务设计中,查询某些信息的时候,一般的URL地址设计为: get /basic/service? keyword=历史 , 之类的URL地址. 但是,在实际的开发和使用中,确是有乱码情况的发生,在后台的读取keyword信息为乱码,无法正确读取. 2. 乱码是如

javascript中运算符的优先级

运算符优先级 JavaScript中的运算符优先级是一套规则.该规则在计算表达式时控制运算符执行的顺序.具有较高优先级的运算符先于较低优先级的运算符执行.例如,乘法的执行先于加法. 下表按从最高到最低的优先级列出JavaScript运算符.具有相同优先级的运算符按从左至右的顺序求值. 其中圆括号可用来改变运算符优先级所决定的求值顺序.这意味着圆括号中的表达式应在其用于表达式的其余部分之前全部被求值. z = 78 * (96 + 3 + 45) 在该表达式中有五个运算符: =, *, (), +

关于javascript中apply()和call()方法的区别

如果没接触过动态语言,以编译型语言的思维方式去理解javaScript将会有种神奇而怪异的感觉,因为意识上往往不可能的事偏偏就发生了,甚至觉得不可理喻.如果在学JavaScript这自由而变幻无穷的语言过程中遇到这种感觉,那么就从现在形始,请放下的您的”偏见”,因为这对您来说绝对是一片新大陆,让JavaScrip 好,言归正传,先理解JavaScrtipt动态变换运行时上下文特性,这种特性主要就体现在apply, call两个方法的运用上. 区分apply,call就一句话, foo.call(

JavaScript中闭包之浅析解读

JavaScript中的闭包真心是一个老生常谈的问题了,最近面试也是一直问到,我自己的表述能力又不能完全支撑起来,真是抓狂.在回来的路上,我突然想到了一个很简单的事情,其实我们在做项目时候,其实就经常用到闭包的,可是面试问的时候,回答又往往是我们经常搜到的答案,唉 不管是应付面试 还是真的想学点东西 ,我也用自己的理解跟大家分享一下,书面化就避免不了了的. 1.闭包是什么? 红宝书中曰:“是指有权访问另外一个函数作用域中的变量的函数.” 简单的说,JavaScript允许使用内部函数---即函数