- 博客(43)
- 收藏
- 关注
原创 关于caller和callee的对比
代码和结果 function a(){ console.log("a.caller",a.caller); console.log("arguments.callee",arguments.callee); } (function b(){ a() })();对比caller是通过函数来调用,返回的是该函数的调用环境,也就是调用栈的最顶层(当最顶层...
2018-10-24 17:11:15 1490
原创 JavaScript 学习笔记 之 回调
Continuation先来看这段异步回调的例子 //A setTimeout(function() { //C }, 1000); //B其中 A B表示程序的前半部分(也就是现在),而C则表示程序的后半部分(也就是将来部分)A,B先执行,等待1s后执行C部分换句话说,回调函数包裹或者说封装了程序的(continuation) 回调的缺点...
2018-10-10 22:44:43 270
原创 Vue 入门级学习笔记 实例
创建一个Vue实例 var vm = new Vue({ //选项对象 });一个Vue应用通过一个由new Vue创建的根Vue实例和可选的嵌套的,可复用的组件树组成所有的Vue组件都是Vue实例,并接受相同的选项对象(一些根实例特有的选项除外) 数据与方法 var origin = { a: 1 } var vm = new Vue({...
2018-10-08 16:07:00 308
原创 JavaScript 学习笔记 之 异步(二)
并发我们在开发过程中经常会遇到的一个情况是,两个事件同时执行比如在实现一个懒加载的界面的时候用户滚动页面,触发一个ajax请求当用户滚动页面足够快的时候发起一个ajax请求的事件可能会与返回ajax响应的事件同时(同一时间段内,并不需要在同一时刻)执行 像这样(至少)两个事件或者说"进程"同时执行就出现了并发但在JavaScript中,它们的事件是在事件循环队列中依...
2018-10-04 00:50:49 259
原创 JavaScript 学习笔记 之 异步(一)
分块的程序JavaScript中的程序是由多个块组成的程序执行时,只有一个块是现在执行,其他的块都是将来再执行最简单常见的块单位是函数 我们在写程序的时候可能会经常遇到一个问题程序中某个块我们并不希望在现在执行的块结束后就立刻执行比如获取后台的数据的块执行完之后,我们希望当后台的数据接收完毕之后再执行打印出数据的块而不是一发送完请求就立刻打印 回调函数是最简...
2018-10-03 22:20:44 223
原创 JavaScript 学习笔记 之 语法
自动分号JavaScript中存在着自动补上分号的行为,即自动分号插入(缩写ASI)ASI只在换行处起作用,而且只有在代码行末尾只有空格或注释的时候才会自动补上分号 //不会自动补分号 var a, b //会自动补分号 var a bJavaScript中规定do..while后面必须带分号,而while和for循环则不需要这时候ASI就非常...
2018-10-02 04:32:04 289
原创 JavaScript 学习笔记 之 运算符优先级
运算符优先级本文不会具体到每个运算符的优先级比较,而是侧重于介绍运算符优先级在代码中的相关规则 var a = "a", b = "b", c = "c"; a && b || c; //"b" a || b && c; //"a"先来看上面的例子首先JavaScript的默认执行顺序是从左到
2018-09-30 20:03:12 329
原创 JavaScript 学习笔记 之 语句和表达式
语句和表达式语句和表达式的区别就像英语中的句子和短语的区别一样,多个表达式通过标点符号或者连接词连接成语句JavaScript中表达式可以返回一个结果值 var a = 3 * 6; var b = a; b;这三行代码都是包含表达式的语句其中 第一行的3*6 , 第二行的a , 第三行的b都是一个表达式,结果值都是18var a=3*6和var b=a被称为...
2018-09-29 22:20:14 261
原创 JavaScript 学习笔记 之 强制类型转换 (三)
宽松相等(==)和严格相等(===)为什么这个问题的讨论要放在类型转换这里呢?首先,这里有一个常见的误区,==是检查值是否相等,===是检查值和类型是否相等然而JavaScript中实际上是==允许在比较中进行强制类型转换,而===不允许首先在性能上,两者差别不大(大概百万分之一秒)我们考虑的只有需不需要强制类型转换这一点而已 抽象相等(==)ES5中"抽象相等...
2018-09-29 15:44:17 253
原创 JavaScript 学习笔记 之 强制类型转换 (二)
字符串和数字之间的隐式强制类型转换先看一组例子 "42" + "0"; //420 42 + 0; //42这种情况通常我们会理解为,+运算符的任意一边(或者两遍都)出现了字符串则是字符串拼接那么再看一组例子 [1, 2] + [3, 4]; //1,23,4事实上,正确的解读应该是如果某个操作数是字符串或者能通过以下操作(从对象)转换为字符串的话,则...
2018-09-27 20:47:52 270
原创 JavaScript 学习笔记 之 强制类型转换 (一)
值类型转换JavaScript中的值类型转换分两种类型转换(显式,发生在编译阶段) var a = 42; var b = String(a); console.log(typeof b); //string强制类型转换(隐式,发生在运行阶段) var a = 42; var b = a + ""; console.log(typeof b); //st...
2018-09-24 19:40:47 347
原创 JavaScript 学习笔记 之 原生函数
原生函数是什么JavaScript的原生函数也叫内建函数例如 String(),Number(),Boolean()等原生函数可以被当做构造函数来使用但通过构造函数(如new String("abc"))创建出来的是封装了基本类型值("abc")的封装对象 var abc = new String("abc"); console.log(typeof abc); //o...
2018-09-22 16:00:50 411
原创 关于JavaScript中0.1+0.2=0.30000000000000004的问题
不只是JavaScript,所有遵循IEEE754规范的语言都会出现这么一个问题0.1+0.2=0.30000000000000004简单来说,出现这种问题的原因是二进制浮点数中的0.1和0.2并不十分精确所以最常见的方法是设定一个误差值来判断0.1+0.2是否和0.3相等而这个误差值通常是2^-52(2.220446049250313e-16)从ES6开始,该值定义在Numb...
2018-09-20 22:05:33 968
原创 JavaScript 学习笔记 之 类型
JavaScript中的类型JavaScript中变量是没有类型的,只有值才有,变量可以随时持有任何类型的值JavaScript中的类型包括了6个基本类型(ES6中新增了一个symbol),和一个复杂类型(object)空值(null) 未定义(undefined) 布尔值(boolean) 数字(number) 字符串(string) 对象(object) 符号(symb...
2018-09-20 21:29:05 218
原创 ES6-class类
先前我们花了很长的篇幅来说明一个事实JavaScript中没有类并从很多方面进行了说明(比如类是通过赋值进行实例化,而JavaScript中的对象是通过原型链关联到另一个对象从而进行委托)而ES6推出的class关键字实际上是一个语法糖,只是通过class来把JavaScript中这一行为伪装的更像类,更好理解但实际上并没有改变JavaScript使用原型链进行关联而不是复制类...
2018-09-17 23:23:38 194
原创 JavaScript 学习笔记 之 原型 (二)
修改原型链在关联两个对象的时候我们通常会使用Object.create(..)方法这个方法接受两个参数第一个参数是创建的对象的[[prototype]]属性引用的对象,第二个参数是想要给新对象添加的属性以及对应的属性描述符 var obj1 = { a: "a" } var obj2 = Object.create(obj1, { b: { value:...
2018-09-16 02:41:12 208
原创 JavaScript 学习笔记 之 原型 (一)
[[Prototype]]简介关于[[prototype]](__proto__)和prototype对象的不同[[prototype]]是几乎所有对象都有的一个属性,存放的是一个对其他对象的引用,在部分浏览器(在ES6之前不是所有)中可以用.__proto__(两根下划线)这个属性(事实上这个属性也并不直接存在于这个对象中)来进行访问,每个普通的对象的[[prototype]]链最后都会...
2018-09-15 01:53:31 221
原创 JavaScript 学习笔记 之 对象 (四) -遍历和迭代
判断属性是否存在的方式(in操作符或者hasOwnProperty()方法),区分属性是否枚举的方法(propertyIsEnumerable或者Object.keys()方法或者Object.getOwnPropertyName()方法),遍历对象属性的方法,Symbol.iterator的定义和用法
2018-09-13 00:30:32 284
原创 JavaScript 学习笔记 之 对象 (三) - [[Get]]和[[Put]]操作
[[Get]]对对象属性的访问看起来似乎是一件很简单的事但事实上这里有个复杂的[[Get]]操作在里面(可以理解为函数调用[[Get]]() )对象默认的内置[[Get]]操作首先是在对象中查找是否有名称相同的属性,有则返回这个属性的值如果没有找到,则会遍历可能存在的[[Prototype]]链(也就是原型链,之后我会专门再出一系列博客来介绍这个)如果无论如何都没找到,name...
2018-09-12 14:53:47 2326 1
原创 JavaScript 学习笔记 之 对象 (一) - 声明
对象有两种定义方式声明(文字)形式 var obj = { key: value //.. };构造形式 var obj = new Object(); obj.key = value; //..两种定义方式生成的对象是一样的,唯一的区别在于声明方式一次性能添加多个键值对类型JavaScript有六种主要类型,包括五种简单基本类型(str...
2018-09-12 00:47:34 215
原创 Angular ng serve 失败:报错 getaddrinfo ENOTFOUND localhost 的解决方法
Angular ng serve 失败:报错 getaddrinfo ENOTFOUND localhost 的解决方法
2018-09-11 10:32:43 1494
原创 JavaScript 学习笔记 之 THIS (三) - 绑定规则优先级
this四种绑定规则的优先级排序,箭头函数中的this,使用DMZ对象来安全的忽略this绑定
2018-09-11 01:40:31 269
原创 JavaScript 学习笔记 之 THIS (一) - 简介
关于this的误解首先,this并不是像它的英语意思一样指向函数本身来看个例子function showThis(){ this.count++; console.log(this.count);}showThis.count=0;showThis();//NaNconsole.log(showThis.count);//0如果this指向调用函数本身的话输出的应...
2018-09-10 20:07:06 155
原创 JavaScript 学习笔记 之 作用域 (六) - 模块
6、1 模块模式模块模式需要两个必备条件必须有外部的封闭函数,该函数必须至少被调用一次(每次调用都会创建一个新的模块实例). 封闭函数必须至少返回一个内部函数,这样内部函数才能在私有作用域中形成闭包,并且可以访问或者修改私有的状态.function thisIsModule(){ let msg="this is fun"; function fun1(){ conso...
2018-09-03 22:41:57 183
原创 ES6-生成器(generator)
generator(生成器)是ES6引入的新类型。定义方式如下(function *)function* gen(){ for(let i=0;i<3;i++){ yield i; } }yield作用类似于return,但是函数运行到yield时并不会像遇到return时一样结束执行,因此可以利用这一点多次返回值直接运行gen()返回的是一个生成器...
2018-09-02 14:59:38 878
原创 for..in 、 for .. of 和 forEach的用法区别
用法:let arr = ['a', 'b', 'c'];for(let i in arr) { console.log(i, arr[i]); //0 a , 1 b , 2 c}for(let x of arr) { console.log(x); // a , b , c}arr.forEach(function(element, index, array) { con...
2018-08-30 19:12:35 334
原创 JavaScript 学习笔记 之 作用域 (四) - 提升
4.1 变量提升console.log(a);//<--理解为什么是undefined而不是2,也不是ReferenceError异常。var a=2;引擎会在解释JavaScript代码之前首先对其进行编译,编译阶段中的一部分工作就是找到所有的声明,并用合适的作用域将它们关联起来。包括变量和函数在内的所有声明都会在任何代码被执行前首先被处理。例如 var a = 2;J...
2018-08-29 20:24:46 207
原创 Github本地上传了commit格子却没有变绿的问题
首先git config user.emailgit config user.name检查下与github用户信息是否一致,没有填email的记得把email补上如果发现写错了,按照以下代码改过来。//将newname、newemail替换成你要改的git filter-branch -f --env-filter "GIT_AUTHOR_NAME='Newname'; ...
2018-08-27 18:50:40 1133
原创 JavaScript 学习笔记 之 作用域 (二) - 词法作用域
问题:词法作用域是什么?怎么才能在运行时“修改”(也可以说是欺骗)词法作用域呢? 2.1 词法作用域简单的说,词法作用域就是定义在词法阶段的作用域。词法作用域由你写代码时把变量和块作用域写在哪里决定的。因此,当词法分析器处理代码时会保持作用域不变(大部分情况下)。function foo(a) { var b = a * 2; function bar(c) { c...
2018-08-27 15:23:19 340
原创 JavaScript 学习笔记 之 作用域 (一) - 作用域是什么
问题:变量存储在哪里?更重要的是,在需要的时候程序如何找到他们? 1.1 编译原理: 尽管通常将JavaScript归类为“动态”或者“解释执行”语言,但事实上它是一门编译语言。但与传统的编译语言不同,他不是提前编译的,编译结果也不能在分布式系统中进行移植。 ----《你不知道的JavaScript》传统编译语言的编译过程(以 var a = 2 为...
2018-08-26 18:35:42 349
原创 Git学习笔记超级无敌精炼版(三) - 分支管理篇
创建分支git branch dev 创建dev分支 git checkout dev 切换到dev分支 git checkout -b dev 创建dev分支,并切换到dev分支,(-b 参数表示创建并切换) git branch 查看当前分支,git branch会列出所有分支,当前分支前会有一个*号 创建分支后修改不提交的话两个分支下的内容都是修改过的,在新分支下提交后,原来的分...
2018-08-25 17:03:51 181
原创 Git学习笔记超级无敌精炼版(二) - 远程库篇
远程仓库准备工作ssh-keygen -t rsa -C "youremail@example.com" 创建SSH key,在用户主目录下的.ssh目录中的id_rsa和id_rsa.pub文件就是SSH key的秘钥对,如果已经有可以跳过 登陆GitHub,打开“Account settings”,“SSH Keys”页面,然后点“Add SSH Key”,填上任意Title,在Ke...
2018-08-24 19:39:22 412
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人