var函数

JavaScript的一些基础性知识

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-12 21:12:34
1. JavaScript概述 1.1. JavaScript概述 1.1.1. JavaScript是一门独立的语言 JavaScript是基于对象和事件驱动的脚本语言,主要应用在客户端。 JavaScript是一门独立的语言。 JavaScript是一种脚本语言,不需要编译,是解释运行的语言。 JavaScript运行需要环境,最常见的运行环境就是浏览器,现代主流的浏览器都内置了JS引擎,可以运行JavaScript代码。JS也有服务器端运行环境,我们不做讨论(Node.js、GoogleV8引擎…)。 1.1.2. JS的特点 解释运行,没有编译过程 基于对象 弱类型 1.1.3. JavaScript不得不说的历史 和JAVA的关系:语法十分相似,但其实毫无关系。 1995年5月,Netscape,LiveScript 1995年12月,改名为JavaScript 1996年8月,微软,Jscript 1997-1999年,ECMA,ECMAScript,基于已有的JavaScript和Jscript,提出了标准的Script语法规则,JavaScript和Jscript都遵循这套标准。 1999-以后,ECMAScript不断的更新 JS的优点: 交互性(它可以做的就是信息的动态交互) 安全性(不允许直接访问本地硬盘) 跨平台性(只要是可以解释Js的浏览器都可以执行

ES6笔记(3)-- 解构赋值

最后都变了- 提交于 2020-02-12 21:11:42
系列文章 -- ES6笔记系列 解构赋值,即对某种结构进行解析,然后将解析出来的值赋值给相关的变量,常见的有数组、对象、字符串的解构赋值等 一、数组的解构赋值 function ids() { return [1, 2, 3]; } var [id1, id2, id3] = ids(); console.log(id1, id2, id3); // 1 2 3 如上,解析返回的数组,取出值并赋给相应的变量,这就是解构赋值 1. 还可以嵌套多层 ,只要相应的模式匹配了就能解析出来 var [a, [b, [c]]] = [1, [2, [3]]]; a // 1 b // 2 c // 3 2. 如若模式不匹配则报错 var [a, [b, [c]]] = [1, [2, 3]]; // Uncaught TypeError: undefined is not a function a 其实,解构赋值内部的实现方式使用到了ES6的 Iterator迭代器 ,通过层层遍历,保证了相应值的获取 3. 解构不成功,但模式匹配了,相应值为undefined var [a, b] = [1]; a // 1 b // undefined 4. 不需要匹配的位置可以置空 var [, b] = [1, 2]; b // 2 5. 使用 ... 这个扩展运算符,匹配余下的所以值,形成一个数组

学习数据结构与算法(二)

北城余情 提交于 2020-02-12 20:53:12
Hello,everyone ! 想以一个轻松愉悦的心情来开始我的每一篇文章。 这是每一次的整理和缩影,希望大家可以发表意见,促进成长。 正值这个特殊时期,在家里开始研究数据结构与算法的问题,若有不对的地方,请各位指教!~~~ 接下来主要看一下数组。 一.使用 1.创建数组 最简单的方法就是通过 [ ] 操作符来声明一个变量(推荐这种方法) var numbers=[]; print(numbers.length); //0 还可以用Array的构造函数创建数组 var numbers=new Array(1,2,3); print(numbers.length); //5 在脚本语言里很常见的一个特性,数组中的元素不必是同一种数据类型,这一点和很多编程语言不同。 var sbjects=["Joe",1,true,null]; 可以通过Array.isArray 来判断一个对象是否是数组。 2.读写数组(这里不做介绍) 3.由自负床生成数组 .split() var sentence="12454314"; var array=sentence.split("4"); for(var i=0;i<array.length;++i){ print("word"+i+":"+array[i]); } //word 0:124 //word 1:54 //word 2:314 4

用JavaScript完成页面自动操作

我是研究僧i 提交于 2020-02-12 18:09:18
  在之前的一篇《 JavaScript实现按键精灵 》中曾记录了几个事件对象,本文将会对它们进行一次实战,要完成的动作包括滚动、点击和翻页。 一、滚动   滚动是通过修改容器元素的scrollTop属性实现的,期间会进行一系列的计算,而每次滚动都会包含一个个小的偏移动作,为了让这些动作能有序进行,自定义了一个Promise,如下所示。 /* * * 简易Promise */ var Promise = { fns: [], then: function (fn) { this .fns.push(fn); return this ; }, resolve: function () { if ( this .fns.length == 0) return ; var fn = this .fns.splice(0, 1 ); fn[ 0] && fn[0].call( this ); } };   为了让滚动表现的更加顺滑,采用了requestAnimationFrame()方法,滚动的方向分为三种,分别是向上、向下或待机,如下所示。 /* * * 随机整数 */ var Util = { random: function (max) { return Math.floor(Math.random() * max); } }; /* * * 随机滚动 * container

用JavaScript完成页面自动操作

被刻印的时光 ゝ 提交于 2020-02-12 12:15:39
  在之前的一篇《 JavaScript实现按键精灵 》中曾记录了几个事件对象,本文将会对它们进行一次实战,要完成的动作包括滚动、点击和翻页。 一、滚动   滚动是通过修改容器元素的scrollTop属性实现的,期间会进行一系列的计算,而每次滚动都会包含一个个小的偏移动作,为了让这些动作能有序进行,自定义了一个Promise,如下所示。 /** * 简易Promise */ var Promise = { fns: [], then: function(fn) { this.fns.push(fn); return this; }, resolve: function() { if (this.fns.length == 0) return; var fn = this.fns.splice(0, 1); fn[0] && fn[0].call(this); } };   为了让滚动表现的更加顺滑,采用了requestAnimationFrame()方法,滚动的方向分为三种,分别是向上、向下或待机,如下所示。 /** * 随机整数 */ var Util = { random: function(max) { return Math.floor(Math.random() * max); } }; /** * 随机滚动 * container 容器元素 */ function

到底什么是闭包

时光怂恿深爱的人放手 提交于 2020-02-12 04:49:11
一开始接触闭包有些问题一直绕不过去,可了看其他的资料,也从网上查了查,下面是我总结的一些东西: “官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 通俗的讲:就是函数a的内部函数b,被函数a外部的一个变量引用的时候,就创建了一个闭包。 (这样在执行完var c=a()后,变量c实际上是指向了函数b,再执行c()后就会弹出一个窗口显示i的值(第一次为1)。这段代码其实就创建了一个闭包,为什么?因为函数a外的变量c引用了函数a内的函数b) function a(){ var i=0; function b(){ alert(++i); } return b; } var c = a(); c(); 闭包的特性: ①.封闭性:外界无法访问闭包内部的数据,如果在闭包内声明变量,外界是无法访问的,除非闭包主动向外界提供访问接口; ②.持久性:一般的函数,调用完毕之后,系统自动注销函数,而对于闭包来说,在外部函数被调用之后,闭包结构依然保存在 系统中,闭包中的数据依然存在,从而实现对数据的持久使用。 优点: ① 减少全局变量。 ② 减少传递函数的参数量 ③ 封装; 缺点: 使用闭包会占有内存资源,过多的使用闭包会导致内存溢出等. 最简洁、直击要害的回答,我能想到的分别有这么三句 1、闭包是一个有状态

什么是闭包?

梦想的初衷 提交于 2020-02-12 00:17:52
一、什么是闭包? 闭包就是能够读取其他函数内部变量的函数,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。 函数的嵌套形成闭包,闭包包括函数本身以及它的外部作用域。使用闭包可以形成独立的控件,延长变量的生命周期,保存中间状态值。 js语言中,函数内部可以直接读取函数外部的全局变量,而函数外部却无法读取函数内部的变量。 那么如何获取函数内部的变量呢,那就是在函数内部,在定义一个函数,这个函数可以拿到它上一级函数的变量,接着把这个函数当成返回值返回,就可以拿到定义在函数内部的变量 简单的说,作用域是针对变量的,比如我们创建一个函数 a1 ,函数里面又包了一 个子函数 a2 。此时就存在三个作用域: 全局作用域、 a1 作用域、 a2 作用域;即全局作用域包含了 a1 的作用域, a2 的作用 域包含了 a1 的作用域。 当 a1 在查找变量的时候会先从自身的作用域区查找,找不到再到上一级 a2 的作用域 查找,如果还没找到就到全局作用域区查找,这样就形成了一个作用域链。 理解闭包首先要理解, js 垃圾回收机制,也就是当一个函数被执行完后,其作用域会被 收回,如果形成了闭包,执行完后其作用域就不会被收回。 如果某个函数被他的父函数之外的一个变量引用,就会形成闭包。 闭包的作用,就是保存自己私有的变量,通过提供的接口(方法)给外部使用,但外部 不能直接访问该变量。

JS闭包那些事

会有一股神秘感。 提交于 2020-02-12 00:05:28
关于闭包,我曾经一直觉得它很讨厌,因为它一直让我很难搞,不过有句话怎么说来着,叫做你越想要一个东西,就要装作看不起它的样子。所以,抱着这个态度,我终于掳获了闭包。 首先来认识一下什么是闭包,闭包,一共有三大特征: 1 函数嵌套函数 2 内部的函数可以引用外部函数的参数和变量 3 参数和变量不会被垃圾回收机制所收回 举个栗子: function aaa(){ var b = 5; function bbb(){ b++; alert(b); } } aaa(); 这个栗子就是很明显的闭包,函数里面嵌套函数,同时内部的函数bbb又可以访问到外部函数aaa中的变量,至于第三个特征,我们都知道在JS解析机制中,函数内的变量在函数调用完后会被销毁,但在这里b并没有被销毁,因为他还会被里面的函数bbb引用,那么怎么证明呢? 首先,我们要注意,在上面这个栗子中,是不会弹出值的,因为里面的函数bbb,只是声明了,并没有被调用,我们都知道,函数它不会主动执行的,那么怎么执行呢,看下面: function aaa(){ var b = 5; function bbb(){ b++; alert(b); // 6 } return bbb; } var c = aaa(); // 此时aaa被执行 同时把返回结果bbb 赋给c c(); //6 将里面的函数作为返回结果,然后可以调用,这种经常会遇见

浅析 JavaScript 中的闭包(Closures)

两盒软妹~` 提交于 2020-02-11 05:10:07
/*--> */ /*--> */ 一、前言 对于 JavaScript 来说,闭包是一个非常强大的特征。但对于刚开始接触的初学者来说它又似乎是特别高深的。今天我们一起来揭开闭包的神秘面纱。闭包这一块也有很多的文章介绍过了,今天我就浅谈一下自己对闭包的的一些理解,希望能提供一点鄙陋的见解帮助到正在学习的朋友。该文章中能使用口语化的我将尽量使用口语化的叙述方式,希望能让读者更好理解,毕竟文章写出来宗旨就是要让人读懂。文章难免有不足之处还希望帮忙指出。 二、Javascript 的作用域链 在了解闭包之前,我们先来看看几个准备知识。 变量的作用域 首先,什么是作用域?域,区域。简单来理解就是一个变量能被访问的范围(区域)。换言之就是这个变量能起作用的区域。按这个标准来划分我们将变量分为 全局变量 和 局部变量 两种 以定义的方式来区分有以下特点: 定义在函数内部的变量是局部变量,定义在函数外部的变量是全局变量。(这个并不只是 Javascript 语言的特点)局部变量在函数内部能被访问,在函数外部不能被直接访问,所以局部变量就是从定义它的地方开始到函数结束的位置结束。当然这里有个细节-- 变量声明提升 。等下我们用一小段代码提一下变量声明提升是什么。我们先来看看局部变量和全局变量的代码 var a = 0; function testFunc(){ var b = 1; console

canvas 绘制动态圆环进度条

*爱你&永不变心* 提交于 2020-02-11 03:00:23
由于使用的是vue开发,所以就展示一下绘制函数好了,上图是效果图 drawMain(drawing_elem, percent, forecolor, bgcolor) { /* @drawing_elem: 绘制对象 @percent:绘制圆环百分比, 范围[0, 100] @forecolor: 绘制圆环的前景色,颜色代码 @bgcolor: 绘制圆环的背景色,颜色代码 */ var context = drawing_elem.getContext("2d"); var center_x = drawing_elem.width / 2; var center_y = drawing_elem.height / 2; var rad = Math.PI*2/100; var speed = 0; // 绘制背景圆圈 function backgroundCircle(){ context.save(); context.beginPath(); context.lineWidth = 8; //设置线宽 var radius = center_x - context.lineWidth; context.lineCap = "round"; context.strokeStyle = bgcolor; context.arc(center_x, center_y,