为基元赋值的Javascript
Javascript assigning value to primitive
本文关键字:Javascript 赋值 更新时间:2023-09-26
如果JavaScript很容易在基元和对象之间强制,为什么向其中添加属性会导致未定义??
var a = "abc";
var b = a.length
console.log(b)//outputs 3
强制是否允许我为基元赋值?如果不是,为什么?
强制是否允许我为基元赋值?
是的。基元被包裹在一个对象中,并在该对象上创建一个属性。不会引发任何异常。
为什么添加属性会导致未定义?
加法本身确实会产生值。
var str = "abc";
console.log(str.someProperty = 5); // 5
然而,你所要求的是从原始人那里获得一处房产。这将在undefined
中返回,因为基元被包装在新的包装对象中,而不是您为其分配属性的对象:
console.log(str.someProperty); // undefined
它只适用于与对象一起创建的特殊属性,如.length
,或继承的属性,如slice
或charAt
方法(请参阅文档)。
如果你想要这样的东西,你需要显式地创建包装器对象并将其存储在某个地方:
var strObj = new String("abc");
strObj.someProperty = 5;
console.log(strObj.someProperty); // 5
// coercion and the `toString` method will even make the object act like a string
console.log(strObj + "def"); // "abcdef"
为什么不这样做?
var abc=Number(3);
abc.foo="bar";
abc; //3
abc.foo; //bar
@贝吉真的很抱歉。我错过了new
声明。这是:
var abc=new Number(3);
abc.foo="bar";
abc; //3
abc.foo; //bar
至少它工作得恰到好处。我不知道别人还需要什么:)基元。。。强迫等等。
相关文章:
- Javascript赋值运算符的奇怪行为
- 字符串问题的javascript赋值
- Javascript 赋值运算符不起作用
- JavaScript 赋值属性语句以返回父对象
- JavaScript 赋值更改了加法操作语义
- JavaScript 赋值与条件检查中的代码效率和速度比较
- 如何防止javascript赋值创建ownProperty
- jQuery/Javascript赋值左侧无效
- 带有逻辑或的奇怪JavaScript赋值
- javascript赋值和值[以及coma运算符]
- Javascript赋值操作符与转换
- JavaScript赋值说明
- JavaScript -赋值-数组的数组
- JavaScript赋值操作符'while'循环
- Javascript赋值变量if为nil
- 通过JavaScript赋值给Asp.net标签,然后通过c#会话对象传递时的问题
- 带有操作*=难题的JavaScript赋值
- 如何在iOS中使用regex从Javascript赋值中解析出JSON数组
- 变量赋值 - Javascript 赋值问题
- 将javascript赋值给某个元素及其子元素