js函数的创建

时间:2022-02-05 05:09:58

1.js 函数的创建有几种方式:

1.1  直接声明

1.2 创建匿名函数,然后赋值

1.3 声明函数,然后赋值给变量

1.4 使用1.3 得到的变量再赋值给变量

1.5 使用函数对象创建函数

 <script>
// 第一种:直接声明函数
function show(a, b) {
return a + b;
}
console.log(show(10, 20));
// 第二种:创建匿名函数,然后把匿名函数赋值给变量,然后就可以通过变量调用函数
var show1 = function(a, b) {
return a + b;
}
console.log(show1(30, 50));
// 第三种:声明一个函数,然后把这个函数赋值给一个变量
var show2 = function show1(a, b) {
return a + b;
}
console.log(show2(301, 200));
// 第四种:把第三种得到的变量中赋值给一个变量
var show2 = function show1(a, b) {
return a + b;
}
var show3 = show2;
console.log(show3(308, 206));
// 第五种:使用函数对象实例化得到函数
var show4 = new Function("a,b", 'return a + b;');
console.log(show4(100, 200));
</script>

js函数的创建

注意第五种函数声明的方式:参数和函数体,都是写在小括号中的

js函数的创建

2.1 关于函数对象Function()的例子:

  <script>
function show() {
var arr = [];
arr.push(10);
arr.push(20);
arr.push(30);
return arr.join("");
}
console.log(show()); // var show = new Function('', 'var arr=[];arr.push(10);arr.push(20);arr.push(30);return arr.join("")');
console.log(show()); // </script>

结果:两种方式是一样的,只是函数对象实例化的方式比较少用:

(备注:在数组arr中添加数据项,然后把数组转化为字符串)

js函数的创建

2.2  完成字符串的拼接:

 <script>
var s = '我的名字是:<%name%>,年龄是<%profile.age%>,性别:<%sex%>';
// //完成字符串的拼接
var parse = new Function('str', 'var arr = [];arr.push("我的名字是:");arr.push("<%name%>");arr.push(",年龄是");arr.push("<%proflie.age%>");arr.push(",性别:");arr.push("<%sex%>");return arr.join("");');
var res = parse();
console.log(s);
console.log(res);
</script>

js函数的创建

2.3 函数对象可以在声明的同时,执行函数体本身

   <script>
new Function('console.log("hello world!");')();
</script>

js函数的创建

2.4 函数对象调用:

  <script>
//拼接字符串之后,把字符串解释出来
var parse = new Function('str', 'var arr = [];arr.push("我的名字是:");arr.push(this.name);arr.push(",年龄是");arr.push(this.profile.age);arr.push(",性别:");arr.push(this.sex);return arr.join("");');
var userInfo = {
name: 'aluoha',
profile: {
age: 25
},
sex: 'man'
};
console.log(typeof parse);
//调用parse函数,把parse函数里面的this指向userInfo;
// 这里主要是为了改变function parse 的作用域,把this指向userInfo;这样,在函数体中,this.属性 就可以进行替换了
var res = parse.call(userInfo);
console.log(res);
</script>

运行结果:

js函数的创建

2.5 正则匹配初级:match() 与exec()的差异

 <script>
var s = '我的名字是:<%name%>, 年龄是<%age%>,性别:<%sex%>';
/*
<%变量名%> // 匹配格式
*/
var re = /<%([^%>]+)?%>/g;
console.log(s.match(re)); // 一次性把所有的匹配结果返回
console.log(re.exec(s)); // 第一次皮匹配结果
console.log(re.exec(s)); // 第二次皮匹配结果
console.log(re.exec(s)); // 第三次皮匹配结果
</script>

js函数的创建

2.5.2 正则匹配初级:match() 与exec()的差异

  <script>
var s = '我的名字是:<%name%>, 年龄是<%age%>,性别:<%sex%>';
var arr = []; //存放整体匹配结果
var re = /<%([^%>]+)?%>/g;
var item = []; //存放单次匹配结果 while (item = re.exec(s)) { //第三次的时候 item = null, 循环退出
arr.push(item); // item 中有两个值,一个是整体匹配的结果,另一个是子匹配的结果
}
console.log(arr.join(''));
</script>

js函数的创建