引用数据类型 JavaScript
reference datatype javascript
根据我从这两个来源可以推断出来的:
源1 和源 2
就是在 JavaScript 中,当在对象的上下文中使用基元数据类型时,它会在内部转换为对象。但这只是一个临时转换,因为对象在使用后将从内存中删除。
我的问题是使用这种方法有什么好处?只是为了节省内存吗?还是有其他广告。?
JavaScript 提供的一个优势是因为你提到的是简单的类型强制。
正如前面的一个评论所暗示的,JavaScript 是松散类型的;你可以声明一个变量,而不必声明它是什么样的变量,因此不知道你在用它做什么。这有一个简单的优点,比如能够写:
var str = 'hello user #',
num = 3,
sayhello = str + num;
alert(sayhello); // alerts 'hello user #3'
请注意,这里如何简单地将数字添加到字符串中,就好像它本身是一个字符串一样。
因此,有许多运算符和方法可用,在更强类型的语言中可能不那么容易使用。可以在参数上使用 parseInt
方法,而无需先检查或转换参数的类型:
var returnWholeNumber = function (arg) {
return parseInt(arg, 10);
},
str = '5 is the answer',
num = 8.19437;
alert(returnWholeNumber(str)); // alerts number 5
alert(returnWholeNumber(num)); // alerts number 8
通过提供临时对象包装器,JavaScript 使您不必自己进行一些转换。它只是根据您尝试执行的操作提供包装器,然后丢弃它。因此,JavaScript 可以比更强类型的语言更具动态性和表现力。
这对于条件语句也很有用。某些值(例如,0
或空字符串''
)是所谓的假值。这样你就可以对它们进行简单的布尔检查,JavaScript 会将原始数据类型包装在布尔包装器中。
if (!userInput) {
alert('no input');
}
但是,类型强制可能会令人困惑,需要小心:
alert('1' + 2 + 3); // alerts 123
alert('1' + '2' + '3'); // alerts 123
alert(1 + 2 + 3); // alerts 6
也适用于条件。检查类型时使用三重等于,以避免意外强制:
var i = '3';
if (i == 3) { // type-coercing conditional; i can be a string or a number and this will be true
alert('i is 3'); // will successfully alert
}
if (i === 3) { // type-checking conditional; i has to be an actual number (and the value must be 3)
alert('i is a number 3'); // will not alert because i is a string
}
这只是因为JavaScript是一种基于原型的程序语言。
基于原型的编程被视为鼓励程序员专注于某些示例集的行为,并且以后才担心将这些对象分类为原型对象,这些对象以后以类似于类的方式使用。因此,许多基于原型的系统鼓励在运行时更改原型。
这决定了你可以做这样的事情:
var str = 'foo'
str.weight // just return 'undefined'
var yes = true, no = false
yes.__proto__.length = function() { return this.toString().length; }
yes.length() // 4
no.length() // 5
var num = 10, amount = 0
num.__proto__.plus = function(num) { return this + num; }
amount.plus(num) // 10
但不幸的是,JavaScript 的某些功能受到 Java 的影响,例如,原始与对象的区别,所以你会得到这些连线的东西:
var str = 'foo'
str.weight = 42
str.weight // undefined
str = new String('foo')
str.weight = 42
str.weight // 42
1.toString() // error!
var n = 1
n.toString() // '1'
- javascript解释器如何理解变量的数据类型
- 为什么不'我们在javascript中使用函数参数的数据类型
- 在javascript中调用函数/对象引用时,可容纳任何数据类型
- 在 Javascript 中更改数据类型
- JavaScript中的“符号”原始数据类型是什么?
- 了解JavaScript中的基元数据类型
- 数值的 JavaScript 数据类型
- javascript中具有不同数据类型的数组
- 如何使用 javascript 获取剑道网格列的数据类型
- 如何判断javascript变量的数据类型是Array
- javascript中是否有字典数据类型
- 为什么要在javascript中使用数据类型
- 当变量的数据类型在 javascript 中为 'Null'
- 我什么时候应该在 JavaScript 中使用数据类型类
- 自定义数据类型,css和javascript
- 声明与 JavaScript 中存在的数据类型同名的类
- 如何在 html 中更改 javascript 数据类型值
- 为什么正则表达式模式不符合 javascript 数据类型的条件
- JavaScript数据类型
- JAVASCRIPT数据类型问题