加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

能看懂这10个JavaScript难点的程序员运气不会太差…

发布时间:2019-08-09 22:32:30 所属栏目:建站 来源:子瑜说IT
导读:副标题#e# 1. 立即执行函数 立即执行函数,即Immediately Invoked Function Expression (IIFE),正如它的名字,就是创建函数的同时立即执行。它没有绑定任何事件,也无需等待任何异步操作: (function(){ //代码 //... })(); function(){}是一个匿名函数,

使用bind方法,可以为函数绑定this值,然后作为一个新的函数返回:

  1. var user = { 
  2.  greet: "Hello!", 
  3.  greetUser: function(userName) { 
  4.  console.log(this.greet + " " + userName); 
  5.  } 
  6. }; 
  7. var greetHola = user.greetUser.bind({greet: "Hola"}); 
  8. var greetBonjour = user.greetUser.bind({greet: "Bonjour"}); 
  9. greetHola("Rahul") // 输出"Hola Rahul" 
  10. greetBonjour("Rahul") // 输出"Bonjour Rahul" 

9. Memoization

Memoization用于优化比较耗时的计算,通过将计算结果缓存到内存中,这样对于同样的输入值,下次只需要中内存中读取结果。

  1. function memoizeFunction(func) 
  2.  var cache = {}; 
  3.  return function() 
  4.  { 
  5.  var key = arguments[0]; 
  6.  if (cache[key]) 
  7.  { 
  8.  return cache[key]; 
  9.  } 
  10.  else 
  11.  { 
  12.  var val = func.apply(this, arguments); 
  13.  cache[key] = val; 
  14.  return val; 
  15.  } 
  16.  }; 
  17. var fibonacci = memoizeFunction(function(n) 
  18.  return (n === 0 || n === 1) ? n : fibonacci(n - 1) + fibonacci(n - 2); 
  19. }); 
  20. console.log(fibonacci(100)); // 输出354224848179262000000 
  21. console.log(fibonacci(100)); // 输出354224848179262000000 

代码中,第2次计算fibonacci(100)则只需要在内存中直接读取结果。

10. 函数重载

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读