Javascript中的复制、传参数

js传参数受特殊字符影响错误的解决方法 类似于 `~!@#$%^&*()_ -=[]{}|;’:”,.\/<>? 这样的特殊字符作为参数时,如果不做处理,会产品传参错误。 解决方法: encodeURI 方法 将文本字符串编码为一个有效的统一资源标识符 (URI)。 encodeURI(URIString) 必选的 URIString 参数代表一个已编码的 URI。 说明 encodeURI 方法返回一个编码的 URI。如果您将编码结果传递给 decodeURI,那么将返回初始的字符串。encodeURI 方法不会对下列字符进行编码:”:”、”/”、”;” 和 “?”。请使用 encodeURIComponent 方法对这些字符进行 立即下载

按值和按引用的比较

Numbers 和 Boolean 类型的值 (true 和 false) 是按值来复制、传递和比较的。当按值复制或传递时,将在计算机内存中分配一块空间并将原值复制到其中。然后,即使更改原来的值,也不会影响所复制的值(反过来也一样),因为这两个值是独立的实体。

对象、数组以及函数是按引用来复制、传递和比较的。 当按地址复制或传递时,实际是创建一个指向原始项的指针,然后就像拷贝一样来使用该指针。如果随后更改原始项,则将同时更改原始项和复制项(反过来也一样)。实际上只有一个实体;“复本”并不是一个真正的复本,而只是该数据的又一个引用。

当按引用比较时,要想比较成功,两个变量必须参照完全相同的实体。例如,两个不同的 Array 对象即使包含相同的元素也将比较为不相等。要想比较成功,其中一个变量必须为另一个的参考。要想检查两个数组是否包含了相同的元素,比较 toString() 方法的结果。

最后,字符串是按引用复制和传递的,但是是按值来比较的。请注意,假如有两个 String 对象(用 new String("something") 创建的),按引用比较它们,但是,如果其中一个或者两者都是字符串值的话,按值比较它们。

注意   鉴于 ASCII和 ANSI 字符集的构造方法,按序列顺序大写字母位于小写字母的前面。例如 "Zoo" 小于 "aardvark"。如果想执行不区分大小写的匹配,可以对两个字符串调用 toUpperCase() 或 toLowerCase()。

传递参数给函数

按值传递一个参数给函数就是制作该参数的一个独立复本,即一个只存在于该函数内的复本。即使按引用传递对象和数组时,如果直接在函数中用新值覆盖原先的值,在函数外并不反映新值。只有在对象的属性或者数组的元素改变时,在函数外才可以看出。

  1. <script language="JavaScript">
  2.             function Clobber(param)
  3.             {
  4.                 param =new Object();
  5.                 param.message="function Clobber is work!";                              
  6.             }
  7.             function Update(param)
  8.             {
  9.                 param.message="function Update is work,the message is that I was changed!";                             
  10.             }
  11.             
  12.             var obj=new Object();
  13.             obj.message="This is the original";
  14.             
  15.             Clobber(obj);
  16.             window.alert(obj.message);
  17.             
  18.             Update(obj);
  19.             window.alert(obj.message);
  20.                 
  21.             
  22.         </script>

 

 

Javascript中数组的用法跟C#语言中的相似,都可以通过array[int]的形式来访问。但在javascript当中的对象来说就有不同了。

将对象作为关联数组

通常,使用点运算符“.”访问对象的属性。例如,

myObject.aProperty

在这里,属性名称是一个标识符。也可以用索引运算符“[]”访问对象的属性。在这里,是把对象看作一个关联数组。关联数组是一种数据结构,它可以动态地将任意的数据的值与任意的字符串相关联。例如,

myObject["aProperty"] // 与上面相同。

尽管索引运算符更多地用于访问数组元素,当用于对象时,索引总是以字符串文字表示的属性名称。

注意访问对象属性的两种方法的重要差异。

运算符属性名称作为对属性名称的处理
点“.”标识符不能作为数据处理
索引“[]”字符串文字能被作为数据处理

在运行之前并不知道属性名称时,这个差异会有用(比如基于用户输入构造对象时)。要想从一个关联数组提取所有的属性,必须用 for … in 循环。

 

特殊字符

JScript 提供了一些特殊字符,允许在字符串中包括一些无法直接键入的字符。每个字符都以反斜杠开始。反斜杠是一个转义字符,表示 JScript 解释器下面的字符为特殊字符。

转义序列字符
/b退格
/f走纸换页
/n换行
/r回车
/t横向跳格 (Ctrl-I)
/'单引号
/"双引号
//反斜杠

请注意,由于反斜杠本身用作转义符,因此不能直接在脚本中键入一个反斜杠。如果要产生一个反斜杠,必须一起键入两个反斜杠 (//)。

document.write('The image path is C://webstuff//mypage//gifs//garden.gif.');
document.write('The caption reads, "After the snow of /'97. Grandma/'s house is covered."');
DIY便携式PEMF磁脉冲治疗仪:百元成本自制生物物理疗法设备 脉冲电磁场(PEMF)疗法是一种基于生物物理原理的非侵入性技术,它通过特定频率的电磁脉冲作用于细胞层面,影响细胞膜电位和离子通道活动,从而可能调节细胞代谢与功能。其技术价值在于提供了一种物理干预手段,在健康科技和生物黑客领域被探索用于放松、恢复等场景。实现PEMF的核心是通过信号发生与功率放大驱动电磁线圈产生可控磁场。本文以蓝牙音频模块和智能手机App为切入点,详细解析了如何利用低成本电子元件(如DFRobot XY-WRBT模块和漆包线线圈)构建一个可自定义频率的便携式PEMF设备,涵盖了从电路设计、线圈 阅读详情

相关推荐

用Zotero+B站Kimi,我如何把一篇顶会论文快速做成组会PPT(含完整提示词)

本文介绍如何利用Zotero和Kimi快速将顶会论文转化为组会PPT,提升学术汇报效率。通过Zotero的文献管理插件和Kimi的AI提炼技术,实现从论文阅读到PPT生成的全流程自动化,帮助研究者在90分钟内完成高质量汇报准备。

weixin_30955617的博客 500

JavaScript函数参数到底是按值传递还是引用传递?

1、传递参数 ECMAScript 中所有函数的参数都是按值传递的。这意味着函数外的值会被复制到函数内部的参数 中,就像从一个变量复制到另一个变量一样。如果是原始值,那么就跟原始值变量的复制一样,如果是 引用值,那么就跟引用值变量的复制一样。对很多开发者来说,这一块可能会不好理解,毕竟变量有按 值和按引用访问,而传参则只有按值传递。 在按值传递参数时,值会被复制到一个局部变量(即一个命名参数,或者用 ECMAScript 的话说, 就是 arguments 对象中的一个槽位)。在按引用传递参数时,值在内存中

WebView 2940

DirectX修复工具使用技巧之二——手动修复C++创建失败的文件

最后更新:2021-2-25 随着V4.0正式版的发布,近来有部分用户来咨询如何解决C++文件创建失败的问题。在此我将以解决最常见的C++2015-2019文件创建失败为例,向大家演示一下在线修复的方法,其他C++或文件的方法大同小异。此次操作以Windows 7为例,其他系统相应参考即可。 首先,如果希望程序能手动在线修复创建失败的失败,请首先确定您使用的V4.0.2版或更高版本,老版本不支持此功能。查看程序版本的方式可以把鼠标放在DirectX Repair.e...

VBcom的专栏 6万+

js深拷贝和浅拷贝

一、按值操作(深拷贝) 以下javascript的基本类型, 复制后,修改一个变量的值时,不会影响其他变量的值。 string number boolean null undefined 例如: let age1 = 100; //number类型 let age2 = age1; //值的赋值属于深拷贝 console.log(age1, age2); //100 100 age1 = 200; console.log(age1, age2); //200 100 值的复制:是给另外一个变量创

qq_32339737的博客 167

1 FFmpeg从入门到精通-FFmpeg简介

1.FFmpeg简介 1.1 FFmpeg的定义 1.2 FFmpeg的历史 1.3 FFmpeg的基本组成 1.4 FFmpeg的编解码工具ffmpeg 1.5 FFmpeg的播放器ffplay 1.6 FFmpeg的多媒体分析器ffprobe 1.7 FFmpeg编译(1)FFmpeg之Windows平台编译(2)FFmpeg之Linux平台编译(3)FFmpeg之OS X平台编译 1.8 FFmpeg编码支持与定制(1)FFmpeg的编码器支持(2)FFmpe

migu123的专栏 3695

22AP10 SS524 平替 海思HI3521DV200 可提供开发资料

入,突破了数字接口的视频输入性能瓶颈,提供两倍于前代产品的视频输入能力。视频编解码引擎、视频图像处理的算法效果及性能得到了进一步提升。芯片为客户产品提供了高性能、优异图像质量。推理引擎,支持多种智能算法应用。合丰富的外围设备及高速接口,该。解决方案,广泛用于模拟高清。产品应用开发的新一代专。四核处理器和性能强大的。

szhorsway的博客 1011

js 带入的参数直接复制

copyUrl(value) { var ctx = document.createElement("input"); var content = value; ctx.setAttribute("value", content); document.body.appendChild(ctx); ctx.select(); .

hy3528的博客 267

SIwave仿真手册——电源完整性仿真之PDN阻抗的提取(四)

(想不到我这个弱鸡的博主有一天也有被催更的时候,看到后台被催的消息,我慌了,赶紧写一篇把。) 文章目录3.1 PDN阻抗的提取3.1.1手动完成PDN阻抗的提取1、创建pin group2、创建端口3、数据文件的清理和检查(参考1.3.4&1.3.5)4、添加电容模型(参考2.2.1)(==这一步很重要==)5、开始仿真6、查看仿真结果3.1.2利用向导工具完成PDN阻抗的提取1、点击图标![在这里插入图片描述](https://img-blog.csdnimg.cn/36d974339ea5449

luohuo9844的博客 1万+

JavaScript参数传递和对象复制

(1)基本类型和引用类型 基本类型:指的是简单的数据段。在内存中占据固定的大小,放在占内存中。 引用类型:指的是那些可能由多个值构成的对象。引用类型的值是对象,保存在堆内存中。 (2)复制 基本类型: var num1 = 6; var num2 = num1; alert('num1='+num1); alert('num2='+num2); 由上图可以看出,基本类型

快乐小编的专栏 606

Qt 5.9.1 32位下,手把手搞定周立功CAN二次开发库的加载与配置(含常见错误排查)

本文详细介绍了在Qt 5.9.1 32位环境下配置周立功CAN二次开发库的完整流程,包括环境准备、项目配置、常见错误排查及性能优化建议。特别针对MinGW 32bit环境,提供了.pro文件的精准配置和DLL部署策略,帮助开发者快速解决库文件匹配、编译报错和运行时问题,实现高效的CAN总线通信开发。

weixin_28717431的博客 356

粒子群算法实战:用Matlab解决旅行商问题(TSP)的完整代码解析

本文提供了使用粒子群算法解决旅行商问题的完整Matlab实战指南。通过将连续空间的粒子群算法进行离散化改造,采用基于交换序的策略来更新粒子位置与速度,并给出了从问题定义、数据结构设计、核心函数实现到主迭代循环的详细代码解析。文章还探讨了参数调优、性能优化及处理复杂TSP变体的进阶思路,为物流规划、路径优化等领域的工程应用提供了可直接复用的解决方案。

m2n3o4p5的博客 350

【JavaScript】深拷贝与浅拷贝

【JavaScript】深拷贝与浅拷贝

weixin_43790653的博客 764

华为OD机试 - 猴子吃桃 - 二分查找(Java 新系统 100分)

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 3850

js实现复制粘贴,传参数决定复制的内容

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <link rel="stylesheet" href="./font/iconfont.css" /> </head> <body> ...

qq_35962740的博客 404

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

为什么传值时加号变成了空格_菜鸟前端的咸鱼之旅-第一天:参数传值

function fn(person) { person.age = 23 person = { name: 'zzz', age: 28 } return person } const p1 = { name: 'xxx', age: 25 } const p2 = fn(p1) console.log(p1) // -> ? console.log...

weixin_39674028的博客 137

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

js对象传值传的是引用

答案为:{name: 123, siteUrl: ‘http://www.baidu.com’}因为 对象传值传的是引用,引用是copy给函数形参。

cxz 228

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

javascript变量,作用域和内存问题(一)

js对象的引用是很有意思的,引用型对象是不可以直接引用的,我猜测这是原型的来源之一,有大神请详解或斧正。“引用类型的值是保存在内存中的对象。与其他语言不同,JavaScript不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象。为此,引用类型的值是按引用访问的。 在很多语言中,字符串以对象的...

asfs28140的博客 121

html输入框网址识别代码,JS获取网址中URL参数值并复制传值给input输入框中的方法...

我们需要用到一个功能就是,打开某个带参数比如https://www.bnxb.com/dns.php?k=www.bnxb.com 的URL链接时,自动将www.bnxb.com输入到页面中的某个INPUT框中。这个时候就可以参考下面代码functiongetObject(objectId){if(document.getElementById&&document.get...

weixin_29521135的博客 1173

犀牛书第3章 数据类型和值(下篇):传值与传址

在JavaScript中和在所有其他编程语言中一样,可以用三种方式来操作一个数据值: ①可以复制它。例如可以把它赋给一个新的变量。 ②可以把它作为参数传递给一个函数或方法。 ③可以把它和另外一个值进行比较,看两个值是否相等。 要理解任何的编程语言,都必须理解这三种操作在这种语言里是如何实现的。 有两种截然不同的方式可以操作数据的值,这两种技术分别叫做传值与传址。 传值:当一个数据是通过

confirmAname的专栏 731

JS对象:传值和传址

理论基础 JS中的所有变量都保存在栈内存中 基本数据类型的值直接保存在栈内存中 对象的值保存在堆内存中,栈内存中保存的是对象的地址 赋值操作a=b都会复制栈内存中的值,只是对象在栈内存中的存的是地址 传值 基本数据类型 String Number Boolean Null Undefined 都是传值 // 下方代码中,修改 b 的值之后,a 的值并不会发生改变 var a = 1; var b = a; b = 2; console.log(a,b) /

沉梦昂志 537

js变量-常见问题:const和var常见问题、语法错误报错原因、变量提升及其解決办法、变量复制传值和传址问题

1、语法错误直接报错原因:解析器在执行代码之前会进行分析。 2、变量提升:变量声明提前

君莫笑 2609

JS 操作一个数据值

任何语言都有自己的操作数据的方法; Js也不例外,js有3种重要的方式来操作一个数据值。 1》复制它。例如把它赋给一个新的变量。 2》把它作为参数传递给一个函数或方法。 3》可以和其他值比较大小。 Js通过传值和传址2种方式操作这些数据的值 从名称可以看处,传值是通过传递值来操作数据。在赋值的过程中,对实际的值进行了拷贝,存储到一个新的变量中。拷贝的值和原来的值是2份完全...

weixin_30609287的博客 103

js- 引用和复制(传值和传址)

好像一般很少人讲到js中的引用和复制,不过弄清楚这个概念可以帮助理解很多东西先讲一下很基础的东西,看看js中几种数据类型分别传的什么引用:对象、数组、函数复制:数字、布尔字符串单独说明,因为它的特殊性,无法确定是传递引用还是复制数值(因为字符串的值是没法改变的,所以纠结这个问题也是没意义的)但是用于比较的时候显然是属于传值比较(稍后具体说比较的事)下面讲一下在使用中的具体体现最普通的使

zzzaquarius的专栏 3万+

关于javasript中参数传递的深研究

关于《javascript高级程序设计》中参数传递这一节,发现好多人不理解,看了博客上许多人在解释这个问题,好多博主解释的也是不够深刻,甚至有些错误。我专门读了一下英文原版,结合李松峰和曹力的翻译中国版,翻译的质量还是十分高的,这一节并没有翻译疏忽或者有谐意,只是大家对于引用的理解不透彻,和对于数据类型的存储方式不清楚,导致许多人一直不明白引用类型的复制和访问还有对象的参数传递问题。 鉴于这个问题: 那我们就好好细说一下这个关于参数传递的问题。 在说这个问题之前呢,我们先来了解一下关于基本类型和引用类

weixin_45147894的博客 222

JS concat()用法

1.concat()方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。字符串同理 语法:Array.concat(val1[,val2[,val3...[,valN]]]) 参数: valN:可以填数组或值,把他们合并到一个新数组里,原数组不变,如果不写,则默认对Array进行一个浅复制 返回值:新的数组实例 话不多说直接上代码: let arr1 = [1,2,3]; let arr2 = [4,5,6]; let arr3 = [7,8,9]; let num = 1

qq_45578842的博客 1万+

js 引用和复制(传值和传址)

http://blog.youkuaiyun.com/zzzaquarius/article/details/4902235 好像一般很少人讲到js中的引用和复制,不过弄清楚这个概念可以帮助理解很多东西 先讲一下很基础的东西,看看js中几种数据类型分别传的什么 复制:数字、布尔引用:对象、数组、函数字符串单独说明,因为它的特殊性,无法确定是传递引用还是复制数值(因为字符串的值是没法改变的,所以...

anlei2455的博客 119
上一篇: UDP 接收问题
下一篇: 关于脚本中的注意问题
取义
博客等级 码龄20年 5粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值