
JavaScript
文章平均质量分 82
JavaScript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。
No Silver Bullet
业精于勤荒于嬉,行成于思毁于随。
学业由于勤奋而专精,由于玩乐而荒废;德行由于独立思考而有所成就,由于因循随俗而败坏。
——出自(唐)韩愈《进学解》
展开
-
JavaScript进阶(三十一): === 与 == 比较运算符
在JavaScript中,===和==原创 2025-04-29 19:42:25 · 284 阅读 · 0 评论 -
JavaScript进阶(三十):Javascript 严格模式详解
文章目录1. 概述2. 为什么用严格模式3. 进入标志4.如何调用4.1 针对单个脚本4.2针对单个函数5.语法与行为改变5.1 全局变量显式声明5.2 禁止this关键字指向全局对象5.3 禁止在函数内部遍历调用栈5.4 禁止删除变量5.5 对象不能有重名的属性5.5 函数不能有重名的参数5.6 显式报错5.7 禁止八进制表示法5.8 arguments对象的限制5.9 函数必须声明在顶层5.10 保留字拓展阅读1. 概述除了正常运行模式,ECMAscript 5添加了第二种运行模式:”严格模式”原创 2021-05-11 11:07:17 · 1253 阅读 · 0 评论 -
JavaScript进阶(二十九): 走近 es6 之 new.target
源码阅读过程中,发现以下语句鉴于该语法为es6所有,项目在编译过程中,控制台报错误。按照常规处理,应用即可解决此类问题。在.babelrc的["es2015"]经过实践发现,build阶段依旧报错。故采用第二套解决方案,使用es5语法重写es6。原创 2023-10-26 09:37:10 · 555 阅读 · 1 评论 -
JavaScript进阶(二十八):js 判断 document.getElementByid(““) 获得的对象是否存在
如果通过document.getElementById("") document.getElementByName("") 等方式获得的对象不存在情况下,进行操作时会报错。因此需要首先判断该对象是否存在,以下两种判断方法,推荐使用第一种。方法一: v==nullvar v;v = document.getElementByIdx_x( "id ");if(v==null){//不存在,错误处理}else{//存在,正常处理}方法二: typeof(obj) == “undefined”原创 2020-11-25 19:51:14 · 5185 阅读 · 2 评论 -
JavaScript进阶(二十七):JavaScript 浮点数精度计算
文章目录一、前言二、浮点数精度问题三、整数精度问题四、解决方案类库Math.jsdecimal.jsbig.js五、延伸阅读5.1 IEEE 754 标准5.2 toFixed()一、前言JavaScript 只有一种数字类型 Number,而且在Javascript中所有的数字都是以IEEE-754标准格式表示的。即所有数字都是以 64 位浮点数形式储存,即便整数也是如此。 所以我们在打印 1.00 这样的浮点数的结果是 1 而非 1.00 。浮点数的精度问题也不只是JavaScript特有,因为有原创 2021-09-13 15:33:26 · 4314 阅读 · 0 评论 -
JavaScript进阶(二十六):ES各版本特性详解
ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,所以它可以理解为是JavaScript的一个标准,但实际上后两者是ECMA-262标准的实现和扩展。原创 2023-10-13 14:36:20 · 4226 阅读 · 2 评论 -
JavaScript进阶(二十五):Promise 详解
Promise意在让异步代码变得干净和直观,让异步代码变得井然有序。Promise在设计上具有原子性,即只有三种状态:等待(Pending)、成功(Fulfilled)、失败(Rejected)。在调用支持Promise的异步方法时,逻辑变得非常简单,在大规模的软件工程开发中具有良好的健壮性。(1)基本语法创建Promise对象:要想给一个函数赋予Promise能力,就要先创建一个Prom...原创 2018-12-22 15:30:15 · 31363 阅读 · 1 评论 -
JavaScript进阶(二十四):ES8 中 async 与 await 使用方法详解
在前期博文中,针对异步编程,提出了Promise解决方案。从语法上说,Promise是一个对象,从它可以获取异步操作的消息,解决回调函数嵌套过多的情况。ES2017标准引入了async函数,使得异步操作变得更加方便。async是“异步”的简写,比如Ajax中就有这个,代表异步请求;因为await只能出现在async函数中的语法规定,await可以认为是async wait的简写。所以应该很好理解async用于声明一个function是异步的,而await用于等待一个异步方法执行完成。原创 2021-05-24 18:19:07 · 5560 阅读 · 0 评论 -
JavaScript进阶(二十三):立即执行函数(匿名函数)( ( ) { } ( ) )含义解析
return x*x;}(10));这是赋值语句;这是一个匿名函数;所谓的匿名函数是指它没有自己的名字,既不是拥有一个函数名,也不是将函数赋给一个变量地址用于日后的调用;为什么会有这样的函数呢,因为有时候只是临时地一次性地使用一个函数,用过了这个函数也就再没用了,那么这个时候就用到了匿名函数(当然,并不一定说只有一次性的才会用到匿名函数,还有其它的情况,不一一举例了。函数()这样的语句我们都知道是让一个函数运行,而括号中的值表示传值,比如:那么,程序执行到name();原创 2023-10-09 15:17:53 · 771 阅读 · 0 评论 -
JavaScript进阶(二十二):集合 Set 和 Map
也就是说,Object 结构提供了“字符串—值”的对应,Map结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。Map在使用过程中的一些注意事项二 如果Map结构中的key是一个对象的情况下,每个对象都是不同的键,即使是两个空的对象,因为两个对象的地址值不同,以后引用别人的插件,使用对象作为键,就能避免同名碰撞的情况。Set的遍历器——keys() 返回键名的遍历器,values() 返回键值的遍历器,entries() 返回键值对的遍历器,forEach() 使用回调函数遍历每个成员。原创 2021-10-25 14:51:53 · 7383 阅读 · 1 评论 -
JavaScript进阶(二十一):JS合并两个数组方法详解
项目开发过程中,将两个数组合并成为一个的情况十分常见。有两个数组a、b,需求是将两个数组合并成一个。原创 2021-10-24 18:34:07 · 4086 阅读 · 0 评论 -
JavaScript进阶(十九):ES6 对象解构
文章目录一、前言使用解构从对象中获取值使用解构从嵌套对象中获取值使用对象解构定义一个新变量以及默认值使用 JavaScript 对象解构别名使用对象解构处理动态名称属性在函数参数和返回值中解构对象解构函数对象返回值在循环中使用对象解构二、三、四、延伸阅读一、前言使用解构从对象中获取值对象解构最基本的用法是从对象中检索属性键的值。例如,我们定义了一个对象,他有两个属性:name和age。const User = { name: 'No Silver Bullet', age: 18}传原创 2022-05-25 17:14:16 · 5412 阅读 · 0 评论 -
JavaScript进阶(十七):js保留两位小数方法总结
文章目录一、前言二、四舍五入相关2.1 toFixed() 方法2.2 Math.floor() 不四舍五入 ,向下取整2.3 字符串匹配2.4 四舍五入保留2位小数(若第二位小数为0,则保留一位小数)2.5 四舍五入保留2位小数(不够位数,则用0替补)三、浮点数保留两位小数3.1 将浮点数四舍五入,取小数点后2位3.2 强制保留2位小数,如:2,会在2后面补上00.即2.003.3 保留两位小数 浮点数四舍五入 位数不够 不补0四、拓展阅读一、前言此博文把相关保留两位小数的方法总结了一下,不同的场景原创 2021-10-20 09:38:47 · 3879 阅读 · 2 评论 -
JavaScript进阶(十五):JS 垃圾回收机制
在之前创建的《JVM》专栏中,讲解了Java虚拟机中垃圾回收机制。同JVM具有垃圾回收机制相似,JavaScript同样具有垃圾回收机制。众所周知,应用程序在运行过程中需要占用一定的内存空间,且在运行过后就必须将不再用到的内存释放掉,否则就会出现下图中内存占用持续升高的问题,一方面会影响程序的运行速度,另一方面严重的话会导致整个应用程序的崩溃。原创 2021-03-14 21:55:55 · 2854 阅读 · 0 评论 -
JavaScript进阶(十四):详解 ES6 中的 export 和 import
但是,如果a是一个对象,改写a的属性是允许的,但非常不推荐修改引入的变量,会造成变量污染,因为其他引入的模块也可以读到改写后的值,这种写法很难查错,所以凡是输入的变量,都当作完全只读,轻易不要改变它的属性。上面代码中,变量 x 作为 foo 的参数,只把变量 x 的值传入 foo,x 只作为数值的载体,函数内部 x 并没有与变量 x 产生直接联系。这里看起来就像是输出了一个变量m作为对外的接口,我们可能会认为 m 这个变量被输出到模块外被使用,并且与模块内的 m 产生了引用的关系。如果多次重复执行同一句。原创 2021-01-22 16:00:13 · 2780 阅读 · 0 评论 -
JavaScript进阶(十三):JavaScript 空值合并运算符、可选链操作符、空值赋值运算符讲解
JS逻辑判断过程中,经常需要、根据数值类型及内容进行逻辑判断处理,为简化处理逻辑,ES2020引入空值合并运算符、可选链操作符、空值赋值运算符等新特性。JavaScript双问号也称为空值合并运算符。这个运算符只会在左侧表达式是null或undefined时返回右侧的表达式。不同于逻辑或,空值合并运算符会允许把0和空字符串作为有效的数值。不要忘记在配合逻辑或/与使用时用上括号。原创 2022-10-09 10:46:44 · 1932 阅读 · 4 评论 -
JavaScript进阶(十六):详解Number()、parseInt()和parseFloat()的区别
本文主要对js中Number()parseInt()和的区别进行详细介绍。原创 2021-04-13 14:46:47 · 2504 阅读 · 0 评论 -
JavaScript进阶(十二):JS 模块化编程规范-CommonJS、AMD、CMD、ES6
是ES5中提供的模块化编程方案,是ES6中新增的模块化编程方案。那么,究竟什么什么是?他们之间又存在什么区别呢?项目开发应该选用哪种模块化编程规范,又是如何使用?本篇博文将一一解答以上疑问。AMD是””的缩写,即”异步模块定义它采用异步方式加载模块,模块的加载不影响它后面语句的运行。这里异步指的是不堵塞浏览器其他任务(dom构建,css渲染等),而加载内部是同步的(加载完模块后立即执行回调)。RequireJS:是一个AMD框架,可以异步加载JS。原创 2022-01-08 21:55:19 · 2096 阅读 · 0 评论 -
JavaScript进阶(二十):精解 ES6 Promise 用法
精解ES6 Promise 用法复杂的概念先不讲,我们先简单粗暴地把Promise用一下,有个直观感受。那么第一个问题来了,Promise是什么玩意呢?是一个类?对象?数组?函数? 别猜了,直接打印出来看看吧,console.dir(Promise),就这么简单粗暴。这么一看就明白了,Promise是一个构造函数,自己身上有all、reject、resolve这几个眼熟的方法,原型上有t...原创 2019-04-17 18:54:26 · 7122 阅读 · 3 评论 -
JavaScript进阶(十八):ES6 Symbol 用法
Symbol是es6中一种新增的数据类型,它表示独一无二的值。es5把数据类型分为基本数据类型(字符串、数字、布尔、undefined、null)和引用数据类型(Object),es6中新增的Symbol数据类型划分到基本数据类型。为什么会有这样一种数据类型呢?//别人定义好的对象//你拿到对象想给这对象添加新的属性和方法的时候,可能会创建出一个name属性和showName方法这个时候,新增加的方法和属性就会去把原有的方法覆盖,这样就产生了冲突。原创 2021-05-18 09:59:27 · 1459 阅读 · 1 评论 -
JavaScript进阶(五):js中取小数整数部分函数
js中取小数整数部分函数丢弃小数部分,保留整数部分js:parseInt(7/2)向上取整,有小数就整数部分加1js:Math.ceil(7/2)四舍五入js:Math.round(7/2)向下取整js:Math.floor(7/2)附:如何判断输入的数值类型(使用时不带引号!)其实就是利用正则表达式。"^\\d+$" //非负整数(正整数+0原创 2016-01-10 16:57:31 · 49052 阅读 · 2 评论 -
JavaScript进阶(四):js字符串转换成数字的三种方法
js字符串转换成数字的三种方法 在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9,那么a.value要小于b.value,因为他们都是字符串形式的. 方法主要有三种:转换函数、强制类型转换、利用js变量弱类型转换。转换函数 js提供了parseInt()和pars原创 2016-01-10 16:51:02 · 49751 阅读 · 1 评论 -
JavaScript进阶(二):在一个JS文件中引用另一个JS文件
在一个JS文件中引用另一个JS文件方法一 在调用文件的顶部加入下例代码: document.write(””); (注:有时你引用的文件还可能需要引用其他的js,我们需要将需要的那个js文件也以同样的方法引用进来)方法二 通过中间界面对js进行应用,就是我们可以在某个html中引用了你需要的js文件,我们可以通过拿到那个html文件的原创 2016-01-03 10:41:50 · 56478 阅读 · 4 评论 -
JavaScript进阶(一):抽离公共函数
JS抽离公共函数问题 在经历了“大量”的项目开发后,发觉越来越多的方法可以被抽离出来作为一个公共方法使用。那么,在js中该思想又该如何实现呢?解答例如,以下方法用于实现将标准时间ThuMar19201512:00:00GMT+0800(中国标准时间)转换为2015-03-1912:00:00的格式。ShopStatementControllervar f原创 2016-01-03 10:39:07 · 50610 阅读 · 1 评论 -
JavaScript进阶(七):JS截取字符串substr 和 substring方法的区别
JS截取字符串substr和substring方法的区别substr方法返回一个从指定位置开始的指定长度的子字符串。stringvar.substr(start[,length])参数stringvar必选项。要提取子字符串的字符串文字或String对象。start必选项。所需的子字符串的起始位置。字符串中的第一个字符的索引为0。length原创 2016-03-16 10:56:40 · 46597 阅读 · 1 评论 -
JavaScript进阶(八):JS实现图片预览并导入服务器功能
JS实现导入文件功能 赠人玫瑰,手留余香。若您感觉此篇博文对您有用,请花费2秒时间点个赞,您的鼓励是我不断前进的动力,共勉!(PS:此篇博文是自己在午饭时间所写,为此没吃午饭,这就是程序猿的生活。) 项目开发过程中,需要实现文件上传功能。借此机会学习之。 使用HTML中现有的inputtype“file”可以支持这一功能。如下所示:原创 2016-01-07 12:50:24 · 52718 阅读 · 1 评论 -
JavaScript进阶(九):JS实现本地文件上传至阿里云服务器
JS实现本地文件上传至阿里云服务器前言 在前面的博客《AngularJS进阶(二十五)JS实现图片预览并导入服务器功能》(点击查看详情)中,实现了JS将本地图片文件预览并上传至阿里云服务器的操作。这次需要实现将本地打包好的文件上传至阿里云服务器。使用前面的图片文件上传方法无法完成此操作。操作界面如下:思路 本地与服务端传输文件的格式应该是熟悉的Base6原创 2016-03-16 11:21:16 · 57519 阅读 · 1 评论 -
JavaScript进阶(六):用JavaScript读取和保存文件
用JavaScript读取和保存文件 因为Google还不提供同步插件数据的功能,所以导入和导出插件配置就必须和文件打交道了。而出于安全原因,只有IE才提供访问文件的API;但随着HTML5的到来,其他浏览器也纷纷支持了。 首先说读取文件。W3C提供了一些FileAPI,其中最重要的是FileReader这个类。 先列出需要用到的HTML标签:原创 2016-01-12 14:54:11 · 55443 阅读 · 1 评论 -
JavaScript进阶(十):Array 数组详解
JS array 数组详解数组的声明方法arrayObj = new Array();//创建一个数组。 var arr1 = new Array(); arrayObj = new Array([size])//创建一个数组并指定长度,注意不是上限,是长度。 var a = new Array(5); arrayObj = new Array([element0[, element1[, ..原创 2016-05-01 09:50:58 · 47382 阅读 · 1 评论 -
JavaScript进阶(十一):闭包学习进阶
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。一、变量的作用域要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。var n=999; function f1(){ alert(n); ...原创 2019-01-12 11:02:03 · 1932 阅读 · 1 评论 -
JavaScript进阶(三):常见工具(校验、通用)
JS常见工具(校验、通用)//姓名校验varcheckName=function(name){//收货人姓名校验(准则:姓名为2-4汉字)varregu=/^[\u4E00-\u9FA5]{2,4}$/;varre=newRegExp(regu);if(!re.test(name)){returnfalse;}return原创 2016-01-03 11:12:33 · 48543 阅读 · 1 评论