前端js2
值传递和引用传递值传递是传递变量的值并不会改变方法外变量的值引用传递是传递对象的地址会改变对象本身的值值传递(形式参数类型是基本数据类型)方法调用时实际参数把它的值传递给对应的形式参数形式参数只是用实际参数的值初始化自己的存储单元内容是两个不同的存储单元所以方法执行中形式参数值的改变不影响实际参数的值。引用传递(形式参数类型是引用数据类型参数)也称为传地址。方法调用时实际参数是对象(或数组)这时实际参数与形式参数指向同一个地址在方法执行中对形式参数的操作实际上就是对实际参数的操作这个结果在方法结束后被保留了下来所以方法执行中形式参数的改变将会影响实际参数。斐波那契数列Fibonacci sequence的定义斐波那契数列指的是这样一个数列1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233377610987159725844181676510946177112865746368........这个数列从第3项开始每一项都等于前两项之和。1、匿名函数,即没有名称的函数2、如果单独只写一个匿名函数此时是不符合语法要求的 会报错。需要给 匿名函数包裹一个括号使之成为表达式。3、被小括号包裹的内容会被js识别为一个函数表达式箭头函数的一些用法1. 省略包含参数的小括号如果只有一个参数那也可以不用括号。只有没有参数或者多个参数的情况下才需要使用括号// 有效let sum (x) {return x;};// 有效let sum1 x {return x;};// 没有参数需要括号let sum2 () {return 1;};// 有多个参数需要括号let sum3 (a, b) {return a b;};2. 省略包含函数体的大括号箭头函数也可以不用大括号但这样会改变函数的行为。使用大括号就说明包含“函数体”可以在一个函数中包含多条语句跟常规的函数一样。省略大括号箭头后面就只能有一行代码省略大括号会隐式返回这行代码的值省略大括号不能写return。// 有效let sum (a, b) {return a b;};// 有效let sum1 (a, b) a b; // 相当于 return a b;// 无效的写法let sum2 (a, b) return a b;3. 嵌入函数箭头函数简洁的语法非常适合嵌入函数的场景let arr [1, 2, 3, 4, 5];arr.map(val val * 2); // [2, 4, 6, 8, 10]123. 箭头函数不能使用arguments如果函数是使用箭头语法定义的那么传给函数的参数将不能使用 arguments 关键字访问// 普通函数let sum function() {return arguments.length;}sum(1, 2, 3); // 3// 箭头函数let sum1 () {return arguments.length;}sum1(1, 2); // Uncaught ReferenceError: arguments is not defined!DOCTYPE html html langen head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 titleDocument/title /head body script for(let a1;a100;a){ if(a%70||a%107||parseInt(a/10)7){ document.write(a,) } } /script /body /html!DOCTYPE html html langen head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 titleDocument/title /head body script let multiplyfunction(){ let num1 for (let i0;iarguments.length;i){ num*arguments[i] } return num } console.log(multiply(1,2,3,4)) /script /body /html!DOCTYPE html html langen head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 titleDocument/title /head body script function tz(n){ if(n1||n2||n3){ return 1 }else { return tz(n-1)tz(n-2) } } console.log(tz(6)) /script /body /html