JavaScript 参数 arguments深入了解以及javascript内置数据类型的讨论
来源:互联网 发布:淘宝买家一天几个好评 编辑:程序博客网 时间:2024/06/06 03:32
一、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是数字;
- JavaScript 参数 arguments深入了解以及javascript内置数据类型的讨论
- javaScript的arguments传参数
- 了解JavaScript的内置对象
- JavaScript的数据类型、内置对象
- javascript内置对象之arguments
- JavaScript函数参数以及变量声明讨论
- javascript的隐含参数(arguments,callee,caller)
- javascript函数参数的arguments对象
- 深入理解javascript之arguments
- [Javascript] 函数参数讨论
- javascript函数参数数组arguments
- JavaScript内置对象——arguments
- JavaScript的循环以及数据类型
- Javascript 的 arguments对象
- javascript的arguments
- Javascript 奇异的 arguments
- javascript的arguments
- JavaScript的arguments对象
- struts2 EXCEL导入
- iptables限速 iptables限制流量
- 上行下行带宽
- IntelliJ IDEA 和 Eclipse 主要区别
- c++面试题
- JavaScript 参数 arguments深入了解以及javascript内置数据类型的讨论
- 分享一个人发展的一些讨论和思考
- Windows 8.1 正式版微软官方原版镜像下载(新增 MSDN 正式版)
- jdom 解析XML
- CSS3背景渐变属性 linear-gradient(线性渐变)和radial-gradient(径向渐变)。
- android https 链接 开发回忆笔记
- 用中文写程序
- 自画cxGrid表格(类封装)
- PHP、JS对数组的操作