我很好奇,所以我尝试了这个:
var test = example = 5;
现在,这是一种定义事物的常见方式......
(例如在节点中,module.exports = exports = ...
)
以上相当于:
example = 5;
var test = example;
现在,如果变量实际上不包含值,而是对内存中值的引用,那么当我更改example
时,如果test
引用了example
正在引用一个值,不应该test
与example
具有相同的值吗?让我们试试吧:
var test = example = 5;
example = 7;
console.log(test, example);
......现在,由于我上面的内容,输出并不是我所期望的。你得到了这个:
5 7
但如果test
引用5
,而test
现在是example
,example
如何7
仍然是7
?他们都不应该EDIT
?
var test = example = {"hello":"world", "foo":"bar"};
example = {"test":"example"};
console.log(test, example);
尝试使用对象...但我得到了同样的行为:
Object {hello: "world", foo: "bar"}
Object {test: "example"}
输出:
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.rdd.RDD
import org.apache.spark.mllib.util.MLUtils
import org.apache.spark.mllib.regression.LinearRegressionModel
import org.apache.spark.mllib.regression.GeneralizedLinearAlgorithm
import org.apache.spark.mllib.regression.LinearRegressionWithSGD
所以,他们仍然不像我预期的那样。
答案 0 :(得分:0)
var a = {}; // There is one object in memory
var b = a; // now both `b` and `a` refer to that object
a = {}; // now we create another object and put a reference to it to an `a`
// we haven't changed `b` so it refers to the former object
总结一下:在JS中你无法改变另一个变量的值。上面示例中的变量a
和b
的值是引用,而不是对象本身。而改变变量值的唯一方法是重新为其赋值。因此,您无法在JS中间接更改变量的值(?)。
答案 1 :(得分:0)
在谈到java脚本时,变量可以接受多个值。 JavaScript是一种非常“宽容”的语言,让我们这样称呼它。
所以,如果你这样说:
var test = example = 5;
测试仍然是5,因为测试现在给出了值5.测试只是在这种情况下的参考例子。
示例的实际值是7.
example = 7;
所以是的,它有点奇怪,但javascript的行为与其他编程语言略有不同。