- 本来这篇文章我已经写过了,后来误删了,所以这次就简略写一次。这里顺便吐槽一下CSDN的保存机制。
- Function 类型没有重载是因为1.变量都是存着arguments里面的无法区分。Function类型是一个对象,而函数名只是一个指针,不可能说一个指针指向2个函数。
- 函数有直接声明和函数表达式两种方式。后者是没有函数提升的效果的。
- 函数有两个重要的内部属性:arguments和this。arguments指向参数数组,有一个属性arguments.callee指向函数本身,利用这个属性可以解耦。(arguments.callee.caller执行调用该函数的函数)this属性指向函数据以执行的环境对象(在全局环境下调用是window,其余情况一般就是函数前面所带的对象名的环境对象)。
- call()和apply()。后者传数组。多用于改变作用域。
- 内置对象即由js实现提供、不依赖宿主环境的对象。除了Object、Array等之前提到过的,这里还有两个Global和Math。
- Global(全局)对象,看看名字就知道基本上我们用的isNaN()、isFinite()、parseInt()、parseFloat()都是该对象的方法。还有encodeURI、encodeURIComponent、decodeURI、decodeURIComponent。其中13对应24对应。另外encodeURIComponent decodeURIComponent能够编码解码更多的特殊字符。
- eval()方法 eval()方法接收一个字符串。该字符串就是我们平常写的代码(假设是code),不过就是用 eval(“code”);包起来了。要注意当代码写在code里面时,函数是无法得到提升的。
var a = b();
function b() {
return 1;
}
--------------
var a = b();
eval("function b() {
return 1;
}");
var color = "red";
alert(window.color);
- Math对象中含min()和max()方法,可以传入多个参数。利用apply()方法,可以达到以下效果:
var values = [1,2,3,4,5,6,7];
var max = Math.max.apply(Math, values);
- ceil()向上取整
- round()四舍五入取整
- floor()向下取整
- random()返回一个0~1的小数 不包含0 和 1
- abs()绝对值 pow(num, power)幂 sqrt()平方根 还有一些三角函数此处省略。还有一些常量此处省略。