函数

  • 函数声明提升,是指执行代码之前会先读取所有方式定义的函数。
  • 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)