javascript的变量类型(图)
|
javascript的变量类型真的很要人纠结,即使你是很有经验的js工程师,你也很难说清楚js的类型和分类。 最近在讲javascript入门指南的时候,有人提出数组为什么不是基本类型,我通过演示typeof []的结果来说明,数组是对象类型派生出来的,而不是六种基本类型。 其实要理解javascript的变量类型很简单,就是我们要找到一个划分的标准。 javascript变量类型分类在很多书中都提到了javascript的变量类型,每本书都有不同的划分标准,如果按照typeof和instanceof的返回值来区分,可以把javascript的变量类型分为两套类型系统:基本类型和对象类型衍生出来的对象类型系统。 var a = new Number(123); console.log(a.valueOf()===123);//true var b = new String(123); console.log(b.valueOf()===123);//false console.log(b.valueOf()==='123');//true obj.valueOf()返回的是该对象的原始值。 值类型和引用类型
值类型示例var a = 123; var b = a; a = 1; console.log(b);//123 引用类型示例var c = [1,2,3]; var d = c; d[0] = 4; console.log(c);//[4,2,3] 值类型和引用类型解释看见上面的示例,有些人可能就晕了,很多人一不小心就改变了引用类型的值,而自己还不清楚程序出现了什么问题! var c = {site:'js8.in'};
var d = c;
var e = d.site;
d.site = 'weibo.com';
console.log(e);//js8.in
arguments的值
ECMAScript中函数的参数是按值传递的,当参数为引用类型值时便按引用传递是一种错误或者不全面的说法。 对于参数为基本类型值的情况,很容易理解。但对于引用类型值的参数,却很容易让人误解为是按引用传递的。如下面的例子: function fn(arg){
arg.site = 'js8.in';
arg = new Object();
arg.site = 'weibo.com';
}
var obj = new Object();
fn(obj);
console.log(obj.site)//js8.in
console.log(window.arg);//undefined
示例中,如果arguments是按照引用类型传递的,那么obj.site应该为weibo.com,但是结果却是js8.in。 事实是这样的:当参数为引用类型值时的确是按引用传递的。 最后来一张周爱民大神的javascript类型关系图:
(编辑:淮安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 这就是三星Galaxy S21 +与iPhone 12 Pro Max的比较
- 一大批黄牛要“失业”了 非现场交通违法异地处理6月30日起实
- iPhone 6s冒充iPhone 7,连卖手机都没看不出来
- 湖南电信IPTV新电视 “逆风弟弟”带你快乐成长
- 一汽轿车发生工商变更:正式更名为一汽解放,法定代表由胡汉
- 康宁与复合材料商Pixelligent合作,将联合开发AR/MR光学元器
- Mobileye与中海庭达成合作 落地L2+自动驾驶服务
- 抗击疫情 尚德机构多措并举打造教师在家直播授课模式
- 正式版未发布iOS 13.4已被越狱 checkra1n 0.9.9版本提前行动
- IDC公布国内可穿戴设备第三季度出货量:小米第一

