JavaScript中的变量默认是全局变量, 严格地说, 甚至不需要在使用前进行声明。 如果对一
个事先未予声明的 JavaScript 变量进行初始化, 该变量就成了一个全局变量。
变量作用域
变量的作用域是指一个变量在程序中的哪些地方可以访问
定义数组
var arr = ["1","2","3"]; console.log(arr["1"]);
JavaScript 中的数组是一种特殊的对象, 用来表示偏移量的索引是该对象的属性, 索引可
能是整数。这些数字索引在内部被转换为字符串类型, 这是因为 JavaScript 对象中的属性名必须是字符串。
方式一:
var numbers = []; print(numbers.length); // 显示 0
方式二:
var numbers = [1,2,3,4,5]; print(numbers.length); // 显示 5
方式三:
var numbers = new Array(); print(numbers.length); // 显示 0
方式四:
var numbers = new Array(1,2,3,4,5); print(numbers.length); // 显示 5
方式五:
var numbers = new Array(10); print(numbers.length); // 显示 10
方式六:
var objects = [1, "Joe", true, null];
var nums = []; for (var i = 0; i < 100; ++i) { nums[i] = i+1; } v ar samenums = nums; nums[0] = 400; print(samenums[0]); // 显示 400
当把一个数组赋给另外一个数组时, 只是为被赋值的数组增加了一个新的引用。 当你通过原引用修改了数组的值, 另外一个引用也会感知到这个变化。这种行为被称为浅复制。
一个更好的方案是使用深复制, 将原数组中的每一个元素都复制一份到新数组中
function copy(arr1, arr2) { for (var i = 0; i < arr1.length; ++i) { arr2[i] = arr1[i]; } }
这样, 下述代码片段的输出就和我们希望的一样了:
var nums = []; for (var i = 0; i < 100; ++i) { nums[i] = i+1; } v ar samenums = []; copy(nums, samenums); nums[0] = 400; print(samenums[0]); // 显示 1