函数
- 函数声明提升,是指执行代码之前会先读取所有方式定义的函数。
- ECMAScript 中没有签名的概念,函数参数可以是任意个值的数组形式传递。如果定义了两个名字相同的函数,则该名字属于后面的函数。
- 不能把函数命名、参数命名为 eval 或 arguments
基本构成
创建 function
function funName(){ ... } // 函数声明(开发插件时、函数需要全局调用时使用)
var fun = function(){ ... } // 函数表达式(推荐)
var sum = new Function('a', 'b', 'return a + b'); // Function 构造函数
参数 arguments
可以通过,参数名 和 arguments(参数对象) 获取到函数调用时传递过来的值。
var fun = function(a,b,c){
console.log(arguments[0],a);
console.log(arguments[1],b);
console.log(arguments[2],c);
}
fun('a','b','c');
返回值 return
函数不指定返回值默认返回 undefined
var fun = function(a,b){
return a + b
}
var result = fun(2,3); // 5
全局函数
URI 编码解码
var uri = 'https://www.aitschool.com?hmsr=test'
encodeURI(uri); // "https://www.aitschool.com?hmsr=test"
encodeURIComponent(uri); // "https%3A%2F%2Fwww.aitschool.com%3Fhmsr%3Dtest"
encodeURI 不会对本身属于URI的特殊字符进行编码,例如冒号、斜杠、问号和井号。而 encodeURIComponent 则会对它发现的任何非标准字符进行编码。和两个方法进行对应的解码方法分别为 decodeURI 和 decodeURIComponent 。
var uri = 'https%3A%2F%2Fwww.aitschool.com%3Fhmsr%3Dtest';
decodeURIComponent(uri); // "https://www.aitschool.com?hmsr=test"
一般情况下常用的是 encodeURIComponent 和 decodeURIComponent 对查询字符串参数进行编码,而不是基础 URI 进行。
定时器
setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。setInterval( ) 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。setInterval( ) 方法会不停地调用函数,直到 clearInterval( ) 被调用或窗口被关闭。由 setInterval( ) 返回的 ID 值可用作 clearInterval( ) 方法的参数。
- setTimeout (延迟执行)
- setInterval (定时执行)
var count = 0;
var intervalID = setInterval(function(){
count ++
console.log(count)
},1000);
setTimeout(function(){
clearInterval(intervalID)
},10000)