博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript 参数 arguments深入了解以及javascript内置数据类型的讨论
阅读量:4294 次
发布时间:2019-05-27

本文共 1249 字,大约阅读时间需要 4 分钟。

一、JavaScript函数特性简介

在JavaScript的函数中,参数会保存在一个arguments对象中,实际上javascript不支持函数重名,后面的函数声明会覆盖前面的。因为javascript的函数参数个数是完全不指定的,而且函数作为一级公民,必须是一个名称对应一个函数。

二、JavaScript的特殊对象arguments

>function test(){return arguments}undefined>test(1)[1]>test(1,2)[1, 2]>typeof test()"object">test('a','b',12)["a", "b", 12]

v = test(1,3,4)[1, 3, 4]Object.prototype.toString.call(v)"[object Arguments]"

chrome浏览器返回值给人一种错觉,好像arguments是个数组,但是其实他的类型就是"Arguments",它是一种拥有length属性的特殊对象;

nodejs里的返回就不一样

> function test(){return arguments}undefined> test(1){ '0': 1 }> test(1,2,3){ '0': 1,  '1': 2,  '2': 3 }>

三、JavaScript中的值与引用

事实上,Arguments保存的不是值,而是引用;

下面给出一个例子:

function test(a,b,c){ a = 10; b = 10; c = 10; console.log(arguments);}undefinedtest(1,2,3)[10, 10, 10] VM4229:2undefined
从这个例子可以看出来:arguments并不是参数的拷贝,而是一个参数的引用,这和javascript内置的数组有很大的区别,再给出一个例子:

var a = 1, b = 1, c = 1;undefinedvar list = [a, b, c]undefinedlist[1, 1, 1]a = 10; b = 10; c = 10;10list[1, 1, 1]
在这里数组list里面的实际上是a,b,c的值而不是引用。

var a = 'hello';undefinedlist = [a]["hello"]a = 'world'"world"list["hello"]

说起值和引用,大家可能会想起java,java里只有基本类型(bool, char, byte, short, int, long, float, double等)是值,其他的都是引用,但是在javascript里面不是这样的,javascript里面宽泛地将有如下数据结构:

number;

string;

object;

boolean;

undefined;

【注意】null的类型是object,NaN是数字;

转载地址:http://qvuws.baihongyu.com/

你可能感兴趣的文章
VNPY2.0火币期货交易接口配置使用
查看>>
win10和ubuntu18双系统时间同步(20190604亲测可行)
查看>>
重启小狼毫输入法,rime输入法重启
查看>>
命令行或终端ImportError:No module named(pycharm运行没问题)
查看>>
量化策略回测01双均线
查看>>
量化策略回测ATRRSI
查看>>
量化干货:量化交易系统设计的六大细节
查看>>
量化策略回测tdma
查看>>
量化策略回测TRIXKDJ
查看>>
量化策略回测唐安奇通道
查看>>
CTA策略如何过滤部分震荡行情?
查看>>
量化策略回测DualThrust
查看>>
量化策略回测BoolC
查看>>
量化策略回测DCCV2
查看>>
mongodb查询优化
查看>>
五步git操作搞定Github中fork的项目与原作者同步
查看>>
git 删除远程分支
查看>>
删远端分支报错remote refs do not exist或git: refusing to delete the current branch解决方法
查看>>
python multiprocessing遇到Can’t pickle instancemethod问题
查看>>
APP真机测试及发布
查看>>