对象的比较均是引用的比较。(不可变的原始值和可变的对象引用)
this返回调用这个方法的对象通过x!==x来判断x是否为NaNvar max = max_width || preferences.max_width || 500;function copy(o,p){ p = p || {};}对于p和q取任意值,这两个等式都永远成立
!(p && q) === !p || !q;!(p || q) === !p && !q;a op= b;
a = a op b;第一行中,表达式a计算了一次,第二行中,表达式计算了两次。var a=[1,2,3];
delete a[2];2 in a; //=>false;a.length; //=>3;注意,数组长度并没有改变,尽管上一行代码删除了这个元素,但删除操作留下了一个“洞”,实际上并没有修改数组长度,因此a数组长度仍然是3。switch语句贴切的运用场景
funciton convert(x){ switch(typeof x){ case 'number': return x.toString(16); case 'string': return '"'+x+'"'; default: return String(x); }}javascript中有4中循环语句:while、do/wihle、for、for/in
for(variable in object){ statement}for/in 遍历对象全部属性
function getvalue(portfolio){ var total = 0.0; for(stock in portfolio){ var shares = portfolio[stock]; var price = getquote(stock); total += shares * prise; } return total;}
throw语句
function factorial(x){ if(x<0) throw new Error("x不能是负数"); for(var f = 1; x > 1; f *= x, x--){ return f; }}try/cacth/finally
try{ var n = Number(prompt("请输入一个正数","")); var f = factorial(n); //上一个throw例子中的代码函数 alert(n + "| = " + f);}catch (ex){ alert(ex);}如果方法中使用了eval()函数,那么javascript解释器将不会对这个方法做任何代码优化。
对象是可变的,我们通过引用而非值来操作对象。
继承:假设要查询对象o的属性x,如果o中不存在x,那么将会继续在o的原型中查询属性相。如果原型对象中也没有x,但这个原型对象也有原型,那么继续在这个原型对象的原型上执行查询,知道找到x或者查找到x或者查找到一个原型是null的对象为止。可以看到,对象的原型属性构成了一个“链”,通过这个“链”可以实现属性的继承。
对象检测属性:可以通过in运算符、hasOwnProperty()和propertyIsEnumerable()方法来完成这个工作。for/in 过滤原型继承属性和方法属性:
for(p in o) { if(!o.hasOwnProperty(p)) continue;}for(p in o) { if(typeof o[p] ==== "function") continue;}ECMAScript 5定义了两个可以用于枚举属性名称你的函数:
Object.keys();(返回对象可枚举的自有属性的名称的数组)Object.getOwnPropertyNames();(它返回对象所有的自由属性名称,而不仅仅是可枚举的属性) function inherit(o){ if(o.typeof !=="object") return; var p = {}; p.proptype = o; return p;}函数与方法:
函数就是这样一段JavaScript代码,它只定义一次,但可能被执行或调用多次。如果函数挂载在一个对象上,作为对象的一个属性,就称它为对象的方法。(没有返回值的函数有时候称为过程)可变参数
function max(/* ... */){ var max=Number.NEGATIVE_INFINITY; for(var i=0;i<arguments.length;i++){ if(arguments[i] > max) max = arguments[i]; } return max;}类似这种函数可以接收任意个数的参数,这种函数也称为“不定实参函数”,这个术语源自古老的C语言。注意,不定实参函数的实参个数不能为零。闭包:
函数体内部的变量都可以保存在函数作用域内,这种特性在计算机科学文献中称为“闭包”。