JavaScript
HHH_LLL
记录生活。
展开
-
JS 数组(Array)方法总结(含ES6)
JavaScript创建数组有两种方式:(1)使用数组字面量表示法:var arr1 = []; //创建一个空数组var arr2 = [2019];//创建一个包含一项元素的数组var arr3 =["Json","Alan","Tony"];//创建一个包含三个字符串元素的数组(2)使用Array构造函数:var arr4 =new Array();//创建一个空数组var ...原创 2019-04-16 21:32:30 · 1004 阅读 · 0 评论 -
聊聊那些年JavaScript代码中关于0.1,0.2,0.3的浮点舍入误差
首先我们看一段代码:console.log(0.1+0.2); //0.30000000000000004console.log(0.3-0.2); //0.09999999999999998console.log(0.3-0.1); //0.19999999999999998为什么这三个在控制台输出的值是这样的呢?这个的话,我们首先从 ECMAScript 基本数据类型中的 Num...原创 2019-06-04 20:53:17 · 425 阅读 · 0 评论 -
JavaScript中的数值转换详解
有三个函数可以把非数值转换为数值:Number()parseInt()parseFloat()第一个函数,转型函数Number()可以用于任何数据类型转换为数值。而另外两个函数parseInt(),parseFloat()则专门用于把字符串转换成数值。Number()函数的转换规则如下:如果是Boolean值,true和false将分别被转换成1和0如果是数字值,只是简单的传...原创 2019-06-04 17:08:59 · 509 阅读 · 0 评论 -
ECMAScript中NaN的详细解读
NaN:Not a Number,即非数值。是一个特殊的数值。这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。例如,在其他编程语言中,任何数值除以非数值都会导致错误,从而停止代码执行。但在ECMAScript(发音:“ek-ma-script”)中,任何数值除以非数值都会返回NaN,因此不会影响其他代码的执行。NaN本身有两个非同寻常的特点。首先,任何涉及...原创 2019-06-03 20:58:12 · 251 阅读 · 0 评论 -
ECMAScript中各种数据类型及其对应的true or false的Boolean转换值
数据类型转换为true的值转换为false的值BooleantruefalseString任何非空字符串“”(空字符串)Number任何非零数字值(包括无穷大)0和NaNObject任何对象nullUndefined不适用undefined...原创 2019-06-03 18:56:54 · 242 阅读 · 0 评论 -
使用JS实现斐波那契(Fibonacci)数列 和 阶乘函数 n!
简单的递归实现function fib(n){ if(n==0) return 0; else if(n==1) return 1; else{ return fib(n-1)+fib(n-2); } }注意:数字不能太大,会卡死,这是简单的实现原理,也不具备保存数据的功能for循环实现funct...原创 2019-05-12 14:21:23 · 610 阅读 · 0 评论 -
使用JS实现一个栈的基本功能
直接上代码://用数组代替栈//若栈内没有元素,往栈底添加一个//取栈内元素时,从栈顶取,也就是存放这个栈数组的最后一个元素从后往前取元素//取元素前判断栈内是否有元素//显示栈内所有元素时,首先判断栈内是否有元素,若没有返回栈空,若有从后往前返回栈内元素function createStack(){ var stack = []; //入栈 this.append = fun...原创 2019-05-12 09:57:59 · 989 阅读 · 0 评论 -
使用setTimeout实现setInterval功能
一个递归解决问题:var i=0;function setInterval(){ setTimeout(function(){ console.log(i++); setInterval(); },1000);}setInterval();原创 2019-05-11 11:03:51 · 914 阅读 · 0 评论 -
闭包(Closure)的一些使用以及解惑
首先我们来看一个常见的例子:var fnArr = [];for(var i=0; i<10; i++){ fnArr[i] = function(){ return i; };}console.log(fnArr[3]()); //10解析:不知道各位是否能理解这里为什么输出是10,但我还是解释一下,怕...原创 2019-05-11 10:46:40 · 417 阅读 · 0 评论 -
深入解析JavaScript中定时器的函数传参问题
首先看一个例子:function f1(num){ console.log(num);}setTimeout(f1(1),300);输出:1//一大段错误,错误内容主要是回调必须是一个函数这里f1(1)带有括号和参数,所以在程序运行时立即执行了一次,然后返回值自然就不是函数了。那假如我们需要去调用函数并传递参数,我们应该如何做呢。有以下几种方法:1,使用匿名函数包装:f...原创 2019-05-10 21:33:47 · 790 阅读 · 0 评论 -
JS排序算法之选择排序与冒泡排序
选择排序:function sort(arr){ var len = arr.length; for(var i=0;i<len;i++){ var min = i; for(var j=i+1;j<len;j++){ if(arr[j]<arr[min]){ min = j; } } if(min != i){ var temp ...原创 2019-05-09 19:11:50 · 530 阅读 · 0 评论 -
判断一个JS对象是否为数组的方法
有以下三种方法:一:使用instanceofvar arr=[1,2,3];console.log(arr instanceof Array);//true二:使用原型链方法var arr=[1,2,3];console.log(arr.constructor === Array);//true三:自写一个封装函数,将判断功能加入其中var arr=[1,2,3];funct...原创 2019-05-06 11:25:51 · 174 阅读 · 0 评论 -
原生JS实现instanceof功能
function f1(left,right){ let prototype = right.prototype; let proto = left.__proto__; while(true){ if(proto === prototype) return true; if(proto === null) return false; //若本次...原创 2019-05-06 11:09:58 · 878 阅读 · 0 评论 -
解读JavaScript原型链
什么是原型链?[注]:转发请注明出处,谢谢支持!说原型链之前,我们先来谈谈JS中的对象。JS中所有对象都是Object的实例,并且继承Object.prototype的属性和方法,也就是说,Object.prototype是所有对象的爸爸。下面再介绍一下prototype,__proto__,constructor三者的概念:prototype:函数在被定义的时候,就拥有一个protot...原创 2019-11-09 22:55:17 · 157 阅读 · 0 评论 -
JavaScript 练手项目--实现贪吃蛇小游戏
HTML+CSS+JavaScript整体功能:点击开始游戏运行游戏–》开始游戏按钮消失–》游戏开始动态随机出现食物,出现三节蛇开始运动暂停、继续游戏功能上下左右–》改变方向运动判断是否吃到食物–》食物消失,蛇长度加一判断游戏结束,弹出游戏结束源码下载:https://github.com/wuhaolun/Retro-Snaker-JS-首先是HTML+CSS显示部分:H...原创 2019-10-31 23:09:51 · 901 阅读 · 0 评论 -
JS判断一个字符串或数组是否回文
可以判断字符串和数组是否回文function checkF1(o){ if(o instanceof Array){ return o.toString() == o.toString().split('').reverse().join(''); } else{ return o == o.split('').reverse().join(''); }}var arr1='...原创 2019-05-06 13:17:59 · 1013 阅读 · 0 评论 -
JS数组去重并排序
function checkArray(arr){ var result = []; for(var i=0,len=arr.length; i<len; i++){ if(result.indexOf(arr[i]) == -1){ result.push(arr[i]); } } return result.sort();}var arr=[1,1,3,4,9,...原创 2019-05-06 12:33:49 · 3679 阅读 · 0 评论 -
JS函数柯里化
curring:把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。//普通的add函数function add(a,b){ return a+b;}//curring后function curringAdd(a){ return function(b) { return a+b;...原创 2019-05-06 11:35:57 · 167 阅读 · 0 评论 -
JS String对象方法总结(详)
String对象方法如下:目录:charAt()charCodeAt()concat()fromCharCode()indexOf()includes()lastIndexOf()match()repeat()replace()search()slice()split()startsWith()substr()substring()toLowerCase()...原创 2019-04-25 20:57:46 · 276 阅读 · 0 评论