注意:从ECMAScript版本3或5的角度提出了这个问题.在ECMAScript 6发布中引入新功能后,答案可能会过时.
varJavaScript中关键字的功能到底是什么,有什么区别
var someNumber = 2;
var someFunction = function() { doSomething; }
var someObject = { }
var someObject.someProperty = 5;
Run Code Online (Sandbox Code Playgroud)
和
someNumber = 2;
someFunction = function() { doSomething; }
someObject = { }
someObject.someProperty = 5;
Run Code Online (Sandbox Code Playgroud)
?
你什么时候使用其中任何一个,为什么/它做什么?
我在Eloquent Javascript(第3章)中学习了变量阴影这个术语,但我试图理解这个概念的一个精确的基本例子.
这是阴影的一个例子吗?
var currencySymbol = "$";
function showMoney(amount) {
var currencySymbol = "€";
document.write(currencySymbol + amount);
}
showMoney("100");?
Run Code Online (Sandbox Code Playgroud) 我在这里读到了很多关于"按值"和"按引用"传递以将数组发送到javascript函数的答案.然而,我在向函数发送数组并使原始数组保持不变时遇到问题.这个例子说明了这个问题:
function myFunction(someArray)
{
// any function that makes an array based on a passed array;
// someArray has two dimensions;
// I've tried copying the passed array to a new array like this (I've also used 'someArray' directly in the code);
funcArray = new Array();
funcArray = someArray;
var i = 0;
for(i=0; i<funcArray.length; i++)
{
funcArray[i].reverse;
}
return funcArray;
}
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么这个函数中的任何东西都应该改变原始数组.
如果将函数调用分配给新数组,则调用此函数会直接更改原始数组:
myArray = [["A","B","C"],["D","E","F"],["G","H","I"]];
anotherArray = new Array();
anotherArray = myFunction(myArray);
// myArray gets modified!;
Run Code Online (Sandbox Code Playgroud)
我尝试使用.valueOf()发送原语:
anotherArray …Run Code Online (Sandbox Code Playgroud)