js杂记
扑满大师
专注在telegram的bot开发,爱好区块链相关
展开
-
路径匹配模块-glob
路径匹配模块-globgithub传送门glob基于minimatch的再次开发,用于路径的匹配,如果你用过glup或则grunt,你一定印象深刻安装 npm i glob基础用法glob(pattern, [options], cb)pattern 匹配字符串,类似正则 可以是字符串,也可以是字符串数组 options 详情见options cb 回调,签名如下cb(err:Er原创 2016-06-19 20:44:05 · 667 阅读 · 0 评论 -
wiredep----另一种思路的前端模块加载方式
wiredep另一种思路的前端模块加载方式github传送门很多人会选择amd的requirejs,seajs这样的方式,而wiredep则回归到原始的方式来思考 既然我需要加载n个js文件,那么我就一条条的把他们的列出来 至于他们的依赖关系,我只要拓扑排序计算出来,然后安排好先后关系就可以了先给出一个例子 安装好wiredep的npm包用bower去安装好要加载的js第三方包 { "n原创 2016-06-19 14:54:30 · 1796 阅读 · 0 评论 -
javascript面试题
1 求c的值var a,b,c;a = "2";b = 2;c = a + b; ‘22’ 字符串跟数字相加,数字转成字符串2 求c的值var a = 0;var b = 9;var c = a || b; 9 0做布尔运算,为false,所以取后面的值3 求t.obj.namevar f = function(){};f.prototype.obj = {name:"jac原创 2016-07-07 10:32:35 · 427 阅读 · 0 评论 -
带随机种子的javascript随机函数
随机种子的作用 我们有的需要随机函数带有随机种子,请考虑下面的应用场景一个游戏中,一个游戏角色A的一次的攻击输出是50-100我们的游戏需要有录像功能,也就是支持replay 如果我们要记录一次A的攻击动作,怎么来记录呢?要不要记录具体的输出值呢? 一般来说,不记录 ,我们只会记录”A发动了一次攻击” 那么我们怎么保证还原这个随机的攻击输出值呢? 答案是使用随机种子随机种原创 2016-07-19 23:44:19 · 2623 阅读 · 0 评论 -
日心说和地心说
公元一世纪出了一个神人,托勒密,他提出了地心说传送门然后后来人们知道,地球绕着太阳转,包括水星,金星,地球,火星等等那么问题来了,如果我们以为地球是中心,太阳固然是绕着地球转,那么其他行星是怎么运动的呢?看看下面我写的动画吧备注:太阳其实非常大,动滑里只能意思一下其他行星按照正确的比例,举例和角速度运动动画… 如托勒密说的,行星自己有了个”小轮”原创 2016-08-05 17:48:04 · 1275 阅读 · 0 评论 -
停机问题
大名鼎鼎的停机问题通俗的说,停机问题就是判断任意一个程序是否会在有限的时间之内结束运行的问题。简单证明假设程序p1(prog)能判断任意程序prog是否能在有限时间内停机再假设另有程序p2如下: if(p1(p2)){ while(1); }else{ return; }如果我们说p1能判断p2是否停机,那么p1(p2)为true,则while(原创 2016-08-29 23:13:08 · 845 阅读 · 0 评论 -
JavaScript运算符中的隐式转换规律
隐式转换规律:一、递增递减运算符(前置、后置)如果包含的是有效数字字符串或者是有效浮点数字符串,则会将字符串转换(Number())为数值,再进行加减操作,返回值的类型是:number类型。如果不包含有效数字字符串,则会将字符串的值转换为NaN,返回值的类型是:number类型。如果是boolean类型,则先会把true或者false转换为1或者0,再进行加减操作,返回值的类型是:number转载 2016-08-31 15:40:25 · 500 阅读 · 0 评论 -
递归求解八皇后
function queen(n) { var count = 0; var arr = []; var row = 0; visit(arr, row); return count; function visit(arr, row) { for (var i = 0; i < n; i++) { arr[row] =原创 2016-09-12 21:23:08 · 296 阅读 · 0 评论 -
javascript中的原型
javascript中的原型关于js中prototype,在js程序员中已经是个老生长谈的话题了。 虽然说很简单,但是在新手中却常常造成困惑,那么就再次拎出来谈一谈。1 题目让我们从一个题目开始我们的话题,请看var f = function(){};f.prototype.obj = {name:"jack",age:18};var s = new f();s.obj.name = "tom";原创 2016-11-10 20:43:06 · 255 阅读 · 0 评论 -
随机函数趣题(谷歌面试题)
有一个能生成1-5的随机函数,在它的基础上,写一个能生成1-7的随机函数var f5 = function() { return Math.ceil(Math.random() * 5);};var test = function(fn) { var count = 10000; var dict = {}; for (; count--;) { v原创 2017-01-11 10:49:27 · 296 阅读 · 0 评论 -
最长子串
递归求最长子串原创 2016-08-29 23:03:01 · 400 阅读 · 0 评论 -
socketio简单笔记-2
房间(频道)// 加入房间socket.join('some room');// 离开房间socket.leave('some room');// 获取所有房间的信息// key为房间名,value为房间名对应的socket ID数组io.sockets.manager.rooms// 获取particular room中的客户端,返回所有在此房间的socket实例io.sockets转载 2017-02-26 00:00:47 · 699 阅读 · 0 评论 -
socket.io简单笔记1
socket.io简单使用说明连接 connection事件是连接事件 connection等价于connect io等价于io.socketsio.sockets.on('connection', function (so) { // 把io看作电话机房,那么so可以看作是连到电话机房的电话线});socket方法 即connection之后的每个电话线原创 2017-02-24 00:24:29 · 417 阅读 · 0 评论 -
在chrome中调试异步加载的js文件
@sourceURL我们常常利用chrome强大的控制台Sources下面进行代码断点调试,但是通过$.getScript等异步加载JS的方式在Sources里面就是找不到,那如何进行debug断点调试呢?方案一: 在script代码的头部或者尾部加上//@ sourceURL=xxx.js,然后在(no domain)里面找到它进行调试,如果使用firefox浏览器,直接在debug中就可以找到x原创 2017-03-24 11:09:20 · 1561 阅读 · 0 评论 -
node中的当前目录
process.cwd() 当前执行程序的路径(执行命令行时候的路径,不是代码路径 例如 在根目录下执行 node ./xxx/xxx/a.js 则 cwd 返回的是 根目录地址 )__dirname: 代码存放的位置process.execPath: 当前执行的node路径(如:/bin/node)转载 2017-08-04 12:54:18 · 753 阅读 · 0 评论 -
chrome-DevTools调试nodejs
基本调试nodejs要执行1.js这个脚本,在命令行中输入 node 1.js 但是以前调试nodejs很麻烦,可能需要用npm装一些包,比如node-inspector 现在有了chrome-DevTools,就简单多了 node --inspect 1.js 然后在chrome浏览器中输入 chrome://inspect 接着点击 Open dedicated DevTool原创 2017-12-20 00:30:59 · 4175 阅读 · 0 评论 -
Underscore学习(2)
函数相关bind 我们有时候需要限定函数中的this的指向 var fn = function(){return this.name;}; var me = {name:'dino'}; var fn2 = _.bind(fn,me); var name = fn2(); // name = 'dino' bind巧妙的利用了javascript中函数原创 2016-06-21 21:58:11 · 237 阅读 · 0 评论 -
Underscore学习(1)
基本的遍历each javascript中自带了for和for in来分别遍历数组和对象,underscore则提供了一种通用的迭代器来遍历// 遍历数组var arr = [];_.each(arr,function(n,i,self){ // n是数组元素 // i是数组元素下标 // self指向arr自己});// 遍历对象var obj = {};_原创 2016-06-21 17:36:23 · 311 阅读 · 0 评论 -
webpack入门
序言>webpack推荐使用commonjs方式来加载模块,但是对AMD/CMD也有很好的兼容支持>** commonjs和CMD是两个词**commonjs:**var a = require('./a');**amd:**define(['a','b'],function(a,b){ module.exports = ...; });官网中文网址学习: h原创 2016-07-15 20:24:23 · 222 阅读 · 0 评论 -
三消游戏的一个重要帮助函数
// 从posi开始查找,寻找在arr中的同类元素function _findSame(arr, posi, predicate) { var w = arr[0].length; var h = arr.length; predicate = predicate || function(el) { return el === arr[posi.y][posi.x] }; var原创 2015-04-23 14:50:26 · 613 阅读 · 2 评论 -
fn.js的源码欣赏(2)
// var fa = funtion(name,age){...};// var fb = fn.partial(fa,"puman");// ->// fb(18) = fa("puman",18)fn.partial = function() { var args = fn.toArray(arguments); var handler = args[0]; var parti原创 2014-03-12 12:15:09 · 634 阅读 · 0 评论 -
fn.js的源码欣赏(1)
'use strict';var fn = {};// 拷贝collection// 1 浅拷贝// 2 可以处理"ArrayLike"fn.toArray = function(collection) { return [].slice.call(collection);};fn.cloneArray = fn.toArray;fn.op = { '+': func原创 2014-03-12 11:30:56 · 812 阅读 · 0 评论 -
优雅的bind
js的bind函数,如果不知道请百度if (typeof Function.prototype.bind !== "function") { // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Compatibility Functio原创 2014-02-26 00:03:11 · 556 阅读 · 2 评论 -
变态javascript测试题
传送门测试题上卷测试题下卷小议 这样的题目权当技术pk用,实际的工作中,应该不会太用到 当然如果你这都了解,那么你的js黑技术确实够可以了转载 2016-06-24 00:09:38 · 354 阅读 · 0 评论 -
Yeoman创建自己的generator(1)
如何创建自己的generator创建一个node模块 A generator is, at its core, a Node.js module. First, create a folder within which you’ll write your generator. This folder must be named generator-name (where name is翻译 2016-06-24 17:44:34 · 753 阅读 · 0 评论 -
Yeoman创建自己的generator(2)
Generator 运行时上下文 一个最重要的概念,是去弄清楚,当你编写一个generator的时候,其中的方法是如何运行的和在哪个上下文中被当作action的prototype方法 每个被添加到generator原型链上的方法都会被当成一个任务.每个任务都跑在一个队列中,这个队列由yeoman的运行环境来决定 换句话说,通过Object.getPrototypeOf(Gener翻译 2016-06-25 16:04:42 · 399 阅读 · 0 评论 -
Yeoman(3) 跟用户的交互
跟用户的交互 你的generator会跟最终的用户进行大量的交互.默认的,yeoman是跑在命令行的,但是它也提供的不同的工具来支持特制的用户界面.举例来说,yeoman完全可以跑在一个图形界面或者一个标准程序里 为了让它具备这样扩展性,yeoman提供了一组抽象的用户界面元素.当你跟你的用户交互的时候,你有责任使用这些抽象元素,如果使用其他的方式,可能使得你的generator不能正翻译 2016-06-25 22:40:09 · 386 阅读 · 0 评论 -
AMD和CMD的"同步"加载方式原理
问题: amd和cmd都是异步加载 但是在某些代码处表现出”同步”加载,原理是什么?原文回答YUI那个没有研究过,不了解。不过我可以说下AMD/CMD的区别以及我的看法: 有必要简单提一下两者的主要区别,CMD推崇依赖就近,可以把依赖写进你的代码中的任意一行,例:define(function(require, exports, module) { var a = require(转载 2016-07-11 17:08:54 · 2314 阅读 · 0 评论 -
yeoman的generator列表难以访问解决方案
yeoman自然是前端脚手架工具的一个利器,但是我们往往会遇到一个难题,就是去找里面的generator的时候,也就是在访问generator列表的时候,会发现打不开理由如下: 因为请求generator列表,事实上是去访问下面的url,而我们知道google的api被墙了,所以悲剧了https://storage.googleapis.com/generators.yeoman.io/cach原创 2016-07-11 23:21:58 · 884 阅读 · 0 评论 -
nodejs中的相互引用
有个a.js和b.js两个文件,它们在同个文件夹里:a.jsvar b = require('./b');console.log(b);module.exports = 'a';b.jsvar a = require('./a');console.log(a);module.exports = 'b'; 当我们在命令行中 node b,会是什么结果 答案是 {}原创 2016-07-23 23:44:26 · 2286 阅读 · 0 评论 -
不要在setTimeout中使用字符串
var a =1;var fn = function(){ var a =3; setTimeout('a=2',100); setTimeout(function(){console.log(a)},5000);};fn();setTimeout(function(){console.log(a)},2000);运行结果是什么?答案: 在nodejs环境中直接报错原创 2016-07-24 21:39:11 · 560 阅读 · 0 评论 -
HTML的attribute和DOM的property
虽然attribute和property都在中文中被翻译成属性,但是他们的含义不同在angular2的教程里,重点的说明了下这个问题 [title]="myTitle">Save是button的title属性被绑定了吗?是,但是刨根问底,是dom的title的property被绑定了,而不是html上的attribute实验如下:传送门可以看到,at原创 2016-06-18 11:56:24 · 715 阅读 · 0 评论 -
JS正则学习
javascript正则学习原创 2016-06-18 21:48:45 · 332 阅读 · 0 评论 -
gps坐标转成火星坐标
gps坐标转成火星坐标 var GPS = { PI: 3.14159265358979324, x_pi: 3.14159265358979324 * 3000.0 / 180.0, delta: function(lat, lon) { // Krasovsky 1940 ...转载 2018-12-14 14:33:58 · 2164 阅读 · 0 评论