v 永远不要测试某个特定的浮点数值
if (a + b == 0.3){ // 不要做这样的测试!alert("You got 0.3.");}
v 保存浮点数值需要的内存空间是保存整数值的两倍,因此ECMAScript 会不失时机地将浮点数值转换为整数值
v 按位非操作(~)的本质:操作数的负值减1。
var num1 = 25; var num2 = -num1 - 1; alert(num2); // "-26"
v 函数声明与函数表达式:
alert(sum(10,10));function sum(num1,num2){
return num1 + num2;} //声明式 正确
alert(sum(10,10));var sum = function(num1, num2){
return num1 + num2;};//函数表达式,执行错误!!!“unexpected identifier”(意外标识符)错误
v 扩充函数作用域:
window.color = "red";
var o = { color: "blue" };
function sayColor(){
alert(this.color);
}
sayColor(); //red
sayColor.call(this); //red
sayColor.call(window); //red
sayColor.call(o); //blue
v 标准递归函数写法:
1.非严格模式
function factorial(num){
if (num <= 1){
return 1;
} else {
return num * arguments.callee(num-1);//严格模式下,不能通过脚本访问arguments.callee
}
}
2.严格模式||非严格模式
var factorial = (function f(num){
if (num <= 1){
return 1;
} else {
return num * f(num-1);
}
});
v 模拟作块级作用域(通常称为私有作用域)的匿名函数的语法如下所示:
(function(){
//这里是块级作用域
})();