当我们谈论JavaScript高级技巧时,以下是一些示例来说明这些概念:
- function outerFunction() {
- var outerVariable = 'Hello';
-
- function innerFunction() {
- console.log(outerVariable);
- }
-
- return innerFunction;
- }
-
- var myFunction = outerFunction();
- myFunction(); // 输出:Hello
在上面的例子中,innerFunction是一个闭包,它可以访问外部函数outerFunction中的outerVariable变量,即使在外部函数执行结束后也可以。
- function greet(name) {
- console.log('Hello, ' + name + '!');
- }
-
- function repeat(func, times) {
- for (var i = 0; i < times; i++) {
- func();
- }
- }
-
- repeat(function() {
- greet('Alice');
- }, 3);
在上面的例子中,repeat是一个高阶函数,它接受一个函数作为参数,并重复调用该函数指定的次数。
- function add(x) {
- return function(y) {
- return x + y;
- }
- }
-
- var add5 = add(5);
- console.log(add5(3)); // 输出:8
- function Animal(name) {
- this.name = name;
- }
-
- Animal.prototype.sound = function() {
- console.log('Animal makes a sound');
- };
-
- function Dog(name) {
- Animal.call(this, name);
- }
-
- Dog.prototype = Object.create(Animal.prototype);
- Dog.prototype.constructor = Dog;
-
- Dog.prototype.sound = function() {
- console.log('Dog barks');
- };
-
- var dog = new Dog('Buddy');
- dog.sound(); // 输出:Dog barks
在上述示例中,我们使用原型链继承来创建Dog对象,并重写了sound方法。这样,Dog对象可以继承Animal对象的属性和方法。
- function* fibonacci() {
- var prev = 0;
- var curr = 1;
-
- while (true) {
- yield curr;
- var temp = prev;
- prev = curr;
- curr = prev + temp;
- }
- }
-
- var fib = fibonacci();
-
- console.log(fib.next().value); // 输出:1
- console.log(fib.next().value); // 输出:1
- console.log(fib.next().value); // 输出:2
- console.log(fib.next().value); // 输出:3
在上面的示例中,我们定义了一个生成器函数fibonacci,它可以生成斐波那契数列的值。通过使用yield关键字,生成器函数可以在每次调用next()时返回一个值,从而实现暂停和恢复函数执行的能力。
这些示例只是JavaScript高级技巧的一部分,JavaScript语言的灵活性和功能丰富使得开发人员可以进行更多的探索和创新。通过深入了解和应用这些高级特性,您可以提升JavaScript代码的可读性、可维护性和性能。
地址:前端面试题库