前端工程师都知道 JavaScript 有基本的异常处理能力。我们可以 throw new Error(),浏览器也会在我们调用 API 出错时抛出异常。但估计绝大多数前端工程师都没考虑过收集这些异常信息反正只要 JavaScript 出错后刷新不复现,那用户就可以通过刷新解决问题,浏览器不会崩溃,当没有发生过好了。这种假设在 Single Page App 流行之前还是成立的。现在的 Single Page App 运行一段时间后状态复杂无比,用户可能进行了若干输入操作才来到...
Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。语法new Map([iterable])参数iterableIterable 可以是一个数组或者其他 iterable 对象,其元素或为键值对,或为两个元素的数组。 每个键值对都会添加到新的 Map。null 会被当做 undefined。描述一个Map对象以插入顺序迭代其元素 — 一个 for...of 循环为每次迭代返回一个[key,value]数组。 键的相等(Key equality)键的比较是基于 "SameValueZero" 算法:N...
1、定义:return 从字面上的看就是返回,官方定义return语句将终止当前函数并返回当前函数的值,可以看下下面的示例代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script> function func1(){ while (true){ return 1; } }; alert(func1()); </script></head><body></body></html>可以看到我在函数里面写了个死循环,然后在下...
为了方便例子讲解,现有数组和json对象如下:var demoArr = [‘Javascript‘, ‘Gulp‘, ‘CSS3‘, ‘Grunt‘, ‘jQuery‘, ‘angular‘]; var demoObj = {aaa: ‘Javascript‘,bbb: ‘Gulp‘,ccc: ‘CSS3‘,ddd: ‘Grunt‘,eee: ‘jQuery‘,fff: ‘angular‘ };for 可以直接看示例,用得太多了,很简单(function() {for(var i=0, len=demoArr.length; i<len; i++) {if (i == 2) {// return; // 函数执行被终止// break; /...
1、定义预解析:在当前作用域下,js运行之前,会把带有var和function关键字声明的变量先声明,并在内存中安排好。然后从上至下解析js语句。而且function的声明优先于var声明。2、var声明通过var声明的变量,进行预解析的时候:先声明变量,不管变量有没有赋值,声明时都赋值为undefined。console.log(a); //undefinedvar a = 1;console.log(b); //undefinedvar b = function(){}12345注意: (1)同名的var声明和同名的函数声明,不管二...
本篇全面分析下JavaScript的原型系统。最标准的使用原型的代码如下图。这张图包括了对象和原型之间的引用关系。红色的链条就是原型链,按照规则foo会从其原型对象Foo.prototype里获得add属性,add是个函数对象。foo的属性toString和valueOf都继承自Foo.prototype,后者也没有实现这两个方法而是继承自Object.prototype。1 原型首先要明确原型是一个对象,目的是为了给新创建的对象快速设置属性。书中一般这么描述原型:"对象都从原...
breakbreak是用来终止循环的,让循环不再往下进行:for(var i=0;i<=5;i++){console.log(i)//输出0123if(i==3){break;} } 当i等于3的时候,直接退出for循环,这个循环将不在被执行continuecontinue和break的语句相似,不同的是,他并不是推出一个循环,而是结束本次循环,开始下一次的循环for(var i=0;i<=5;i++){if(i==3){continue;}console.log(i)//输出01245 } returnreturn语句用于返回指定的函数值,return只能出现在函数体中 当...
JavaScript中的this总是让人迷惑,应该是js众所周知的坑之一。 个人也觉得js中的this不是一个好的设计,由于this晚绑定的特性,它可以是全局对象,当前对象,或者…有人甚至因为坑大而不用this。 其实如果完全掌握了this的工作原理,自然就不会走进这些坑。来看下以下这些情况中的this分别会指向什么: 1.全局代码中的this1alert(this)//window 全局范围内的this将会指向全局对象,在浏览器中即使window。 2.作为单纯的...
事件流 描述的是在页面中接收事件的顺序事件冒泡 由最具体的元素接收,然后逐级向上传播至最不具体的元素的节点(文档)事件捕获 最不具体的节点先接收事件,而最具体的节点应该是最后接收事件 事件处理 HTML事件处理:直接添加到HTML结构中 DOM 0级事件处理:把一个函数赋值给一个事件处理程序属性【会被覆盖掉】结果会显示17行的结果,前面几行的事件会被覆盖掉。18行的是清空事件。 DOM 2级事件处理: ...
cookie概述 在上一节,曾经利用一个不变的框架来存储购物栏数据,而商品显示页面是不断变化的,尽管这样能达到一个模拟 全局变量的功能,但并不严谨。例如在导航框架页面内右击,单击快捷菜单中的【刷新】命令,则所有的JavaScript变量都会丢失。因此,要实现严格的 跨页面全局变量,这种方式是不行的, JavaScript中的另一个机制:cookie,则可以达到真正全局变量的要求。 cookie是浏览器提供的一种机制,它将document 对象的cook...
javascript工具--控制台详解(转自 阮一峰博客)大神这篇博客是写在2011年,主要介绍 “Firefox” 浏览器插件 “Firebug” 的操作,如今主流浏览器对控制台都已经提供了很好的支持。我自己用的最多是谷歌的 “chrome” 浏览器,下面也用 “chrome” 浏览器来调试。一、显示信息的命令console.log(); //控制台输入 网页中不会输出console.info(); //一般信息console.debug(); //除错信息console.warn(); //警告提示console.erro...
http://blog.csdn.net/m13666368773/article/details/7586106 本文总结一下浏览器在 javascript 的加载方式。关键词:异步加载(async loading),延迟加载(lazy loading),延迟执行(lazy execution),async 属性, defer 属性 一、同步加载与异步加载的形式 1. 同步加载我们平时最常使用的就是这种同步加载形式:<script src="http://yourdomain.com/script.js"></script>同步模式,又称阻塞模式,会阻止浏览器的后续处理,...
JS为何是单线程的? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊。(在JAVA和c#中的异步均是通过多线程实现的,没有循环队列一说,直接在子线程中完成相关的操作)JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假...
1.1、字符串1.1.1、字符串语法1、 正常字符串我们使用用‘‘或""括起来的字符表示。如果如果‘本身也是一个字符,那就可以用""括起来测试代码:var a = "I"+"'"+"m"+" "+"Ok"效果:如果字符串内部既包含‘又包含"怎么办?可以用转义字符\来标识,比如:I‘m "OK"!,我们可以用转义字符测试代码:var a ='I\'m \"OK\"!';效果:2、注意转义字符 ()\' 表示它是一个字符串 \n 换行 \t 空格 \u4e2d \u#### Unicode字符 \x41 ...
本篇文章主要是对javascript避免数字计算精度误差的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助如果我问你 0.1 + 0.2 等于几?你可能会送我一个白眼,0.1 + 0.2 = 0.3 啊,那还用问吗?连幼儿园的小朋友都会回答这么小儿科的问题了。但是你知道吗,同样的问题放在编程语言中,或许就不是想象中那么简单的事儿了。不信?我们先来看一段 JS。var numA = 0.1; var numB = 0.2; alert( (numA + numB) === 0.3 );执行...