We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
/** * arguments, all parameters */ function abs2() { if (arguments.length === 0) { return 0; } var x = arguments[0]; return x >= 0 ? x : -x; } abs2(); //= abs2(10); //= abs2(-9); //= /** * rest, es6 */ function foo(a, b, ...rest) { console.log(a); console.log(b); console.log(rest); } foo(1, 2, 3, 4, 5); foo(1); /** * variable */ // 变量提升 // 由于JavaScript的变量作用域实际上是函数内部,我们在for循环等语句块中是无法定义具有局部作用域的变量的 const PI = 3.14; //= // @解构赋值 var [x, y, z] = ["hello", "JavaScript", "ES6"]; var person = { name: "小明", age: 20, gender: "male", passport: "G-12345678", school: "No.4 middle school" }; var { name, age, passport } = person; //= // @交换变量 var x = 1, y = 2; [x, y] = [y, x]; function buildDate({ year, month, day, hour = 0, minute = 0, second = 0 }) { return new Date( year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second ); } buildDate({ year: 2018, month: 1, day: 1 }); //= /** * method */ // @that var xiaoming = { name: "xiaoming", birth: 1990, age: function() { var that = this; function getAgeFromBirth() { var y = new Date().getFullYear(); return y - that.birth; } return getAgeFromBirth(); } }; xiaoming.age(); //= // @apply Math.max.apply(null, [3, 5, 4]); //= Math.max.call(null, 3, 4, 5); //= // @装饰器 var count = 0; var oldParseInt = globalThis.parseInt; globalThis.parseInt = function() { count += 1; return oldParseInt.apply(null, arguments); }; /** * 高阶函数 */ // @map, reduce, filter var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.map(Math.pow); //= arr.reduce(function(x, y) { return x + y; }); //= arr.filter(function(x) { return x % 2 == 0; }); //= // @sort arr.sort(function(x, y) { if (x < y) { return 1; } else if (x > y) { return -1; } else { return 0; } }); //= // @Array var arr = ["Apple", "pear", "orange"]; arr.every(function(s) { return s.toLowerCase() == s; }); //= arr.find(function(s) { return s.toLowerCase() === s; }); //= arr.findIndex(function(s) { return s.toLowerCase() === s; }); //= /** * 闭包 * 内部函数sum可以引用外部函数lazy_sum的参数和局部变量,当lazy_sum返回函数sum时,相关参数和变量都保存在返回的函数中,这种称为“闭包(Closure)”的程序结构拥有极大的威力。 */ // @函数作为返回值 function lazy_sum(arr) { var sum = function() { return arr.reduce(function(x, y) { return x + y; }); }; return sum; } var f1 = lazy_sum([1, 2, 3, 4, 5]); f1(); //= var f2 = lazy_sum([1, 2, 3, 4, 5]); f1 === f2; // @闭包 // 如果一定要引用循环变量怎么办?方法是再创建一个函数,用该函数的参数绑定循环变量当前的值,无论该循环变量后续如何更改,已绑定到函数参数的值不变 function count2() { var arr = []; for (let i = 0; i <= 3; i++) { arr.push( (function(n) { return function() { n * n; }; })(i) ); } return arr; } var results = count2(); var f1 = results[0]; var f2 = results[1]; var f3 = results[2]; function create_counter(initial) { var x = initial || 0; return { inc: function() { x += 1; return x; } }; } var c1 = create_counter(); c1.inc(); //= c1.inc(); //= c1.inc(); //= /** * 箭头函数 */ x => ({ foo: x }); // 箭头函数完全修复了this的指向,this总是指向词法作用域,也就是外层调用者 /** * generator */ function* bar(x) { yield x + 1; }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
The text was updated successfully, but these errors were encountered: