javascript没有块作用域
so 一些看似莫名其妙的问题出现了
比如如下
function add (sum1, sum2) { sum = sum1 + sum2; return sum;}add(10, 20);alert(sum);
这个时候sum居然有值了
我猜测是因为return的原因
不过当我删除return时还是会出现如上情况
sum估计加入全局变量 不过是不是window.sum不好说
function add (sum1, sum2) { var sum = sum1 + sum2; return sum;}add(10, 20);alert(sum);
所以除非你想在外面使用这个变量 最好在函数里使用var
var color = "blue";function getColor() { return color;}alert(getColor());
弹出"blue"
ok这时候我又慌了 为什么会这样查找
var Pi = { getColor: function() { return color; }}
我把她放到对象里试试 可是卧槽还是能查到外面的全局变量
javascript的对象
创建对象时 属性名也可以用字符串
var person = { "name": "Nicholas", "age": 29, 5: true};
json语法 javascript对象 相似啊
javascript Array一种特殊的Object
so 如何检测呢
在ECMAscript5中
Array.isArray(value)
说道ECMAscript5 IE居然要到9才支持 我设计框架的时候不得不考虑放弃IE8了 没办法
Array是由Object继承过来的
所以toLocaleString, toString方法也相应继承过来
var person1 = { toLocaleString: function() { return "Jake"; }, toString: function() { return "Jake"; }}var person2 = { toLocaleString: function() { return "Andy"; }, toString: function() { return "Jake"; }}var people = [person1, person2];alert(people);alert(people.toString());alert(people.toLocaleString());