var函数

前端干货之JS最佳实践

岁酱吖の 提交于 2020-03-30 10:22:54
持续更新地址 https://wdd.js.org/js-best-pr... 1. 风格 一千个读者有一千个哈姆雷特 ,每个人都有自己的code style。我也曾为了要不要加分号给同事闹个脸红脖子粗,实际上有必要吗? 其实JavaScript已经有了比较流行的几个风格 JavaScript Standard Style Google JavaScript Style Guide Airbnb JavaScript Style Guide 我自己使用的是 JavaScript Standard Style , 我之所以使用这个,是因为它有一些工具。可以让你写完代码后,一旦保存,就自动帮你把你的风格的代码修正成标准分割,而不是死记硬背应该怎么写。看完这个页面,你就应该立马爱上 JavaScript Standard Style , 如果你用vscode, 恰好你有写vue, 你想在.vue文件中使用standard风格,那么你需要看看 这篇文章 2. 可维护性 很多时候,我们不是从零开始,开发新代码。而是去维护别人的代码,以他人的工作成果为基础。确保自己的代码可维护,是赠人玫瑰,手留余香的好事。一方面让别人看的舒服,另一方面也防止自己长时间没看过自己的代码,自己都难以理解。 2.1. 什么是可维护代码 可维护的代码的一些特征 可理解 易于理解代码的用途 可适应 数据的变化

JS事件派发器EventEmitter

让人想犯罪 __ 提交于 2020-03-30 04:39:37
原文地址: http://zhangyiheng.com/blog/articles/js_event_mitter.html 需求 随着Browser客户端JS越来越复杂,MVC( Client端)设计模式成为一个很好的开发选择, 而MVC开发模式中,最基础的功能就是把Model和View关联起来, 当Model发生变化的时候,View呈现做出相应的调整。 实现此功能最合适的方式莫过于事件Event了, 对于Event大家应该都很熟悉,比如dom中的button,可以通过addEventListener/attachEvent添加click事件处理。 而一般的object对象是没有事件派发功能的,基于此需求,实现了一个EventEmitter。 具体实现 /** * Created by taozh on 2017/6/22. * taozh1982@gmail.com */ var EventEmitter = function () { this.__z_e_listeners = {}; }; EventEmitter.prototype.on = function (evt, handler, context) { var handlers = this.__z_e_listeners[evt]; if (handlers === undefined) {

简单的倒计时

自闭症网瘾萝莉.ら 提交于 2020-03-29 22:16:34
上篇写到了倒计时的效果实现,现在分享一个简单的倒计时案例,不多说直接上代码 HTML部分: <div id="box"> <h1>倒计时</h1> <div class="container"> <span class="hour">1</span> <span class="minute">2</span> <span class="second">3</span> </div> </div> css部分: #box{ width: 300px; height: 300px; margin: 200px auto; text-align: center; background: red; } .container{ height: 200px; /*margin: 200px auto;*/ display: flex; flex-direction: row; align-items: center; } .container span{ vertical-align: middle; background-color: #000000; color: #FFFFFF; flex-grow: 1; font-size: 28px; height: 50px; line-height: 50px; text-align: center; margin: 0px 10px; }

匿名类型

徘徊边缘 提交于 2020-03-28 15:23:10
匿名类型 定义:匿名类是没有名字的类 特点:匿名类不能被引用,只能在创建时通new来声明。 匿名类的优势以及应用场景: a.匿名类型提功了一种方便的方法 可以来将一组只读属性封装到单个属性中,而且 无需首先定义一个类型 b.类型名由编译器生成 并且不能再带源代码级使用 ,每个属性的类型有编译器推断 c.可以使用new运算符和对象初始值创建匿名类型 匿名类型的应用: var news=new{name="",day=""} showinfo(news); var隐士类型: 隐式类型 var , 是 声明变量是无须指定数据类型,编译器会根据赋值判断其数据类型的一种机制。 优势:通过var这个隐式类型,可以提高开发人员的开发效率,很多时候可以不考虑对象的类型,编译器会自动帮我们判断 var的规则使用: var可习惯会被比阿布一起根据初始值的类型推断出具体的类型 var类型的局部变量必须赋予初始值 无法将null辅助分隐式类型的局部变量 car类型那个变量的定义必须是在方法中或者在属性get,set访问器中 var‘不能作为方法的参数 不能当作返回值类型 语句中只能声明一次变量,声明后不能更改类型 匿名方法:是c#2.0引入的一个新特性,它允许开发者内联声明自己的函数代码无须使用委托函数 匿名方法的应用场景: 1.需要一个临时方法,该方法使用次数极少; 2. 这个方法的代码很短

js笔记10

随声附和 提交于 2020-03-28 06:12:43
1.闭包    封装:减少代码的冗余,提高代码的重复利用率   继承:本来需要开辟多个空间,只需要开辟一个空间,减少内存的消耗,提高性能   函数归属:函数归属谁,跟他在哪调用没有关系,而跟他在哪定义有关   闭包的定义:函数在调用的时候,会形成一个私有作用域,内部的变量不能被外部访问,这种保护机制叫闭包(这就意味着函数调用完毕,这个函数形成的栈内存就会被销毁)   栈内存被销毁的案例:    function fn(){     var a=12;     a++;      console.log(a)   }   fn() //13   fn() //13   fn() //13 (因内部存在一个变量,所以在函数内部栈内存就会被销毁)       但有时候,我们不希望他被销毁 ,所以需要return   案例:    function fn(){     var a=12     return function(){       a++;       console.log(a)     }   }   var ss=fn()   ss()  //13   ss()  //14   ss()  //15    解析:       fn()调用完毕后得到的是一个匿名函数,但这个匿名函数在fn()这个作用域下定义的,所以匿名函数内部的变量在fn()作用域下查找

经纬度转换度分秒

我的梦境 提交于 2020-03-28 02:38:57
  在开发过程中从地图取点的经纬度通常在展示的时候需要转换为度分秒展示, 如 119.299307 展示为 119°17'58''。 只需简单利用Math函数即可。同样的代码也可应用于JavaScript代码,只需将Abs、Floor等首字母改为小写即可。 代码如下: double tempValue = Convert.ToDouble(value); tempValue = Math.Abs(tempValue); var v1 = Math.Floor(tempValue);//度 var v2 = Math.Floor((tempValue - v1) * 60);//分 var v3 = Math.Round((tempValue - v1) * 3600 % 60);//秒 value= v1+"°"+v2+"'"+v3+"''"; 来源: https://www.cnblogs.com/KnifezZZ/p/8251726.html

JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别

前提是你 提交于 2020-03-27 22:18:53
JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别   ES2015(ES6)带来了许多闪亮的新功能,自2017年以来,许多JavaScript开发人员已经熟悉并开始使用这些功能。虽然这种假设可能是正确的,但仍有可能其中一些功能对某些人来说仍然是一个谜。   ES6带来的一个新特性是 新增了通过使用let、const来声明变量 。在本文中,我们将讨论var,let和const的范围,使用和提升。在您阅读时,请注意它们之间的差异,我会指出。 VAR VAR的范围   范围本质是意味着这些变量可供使用的位置。 var声明的范围是全局作用于或者本地函数作用域 。当一个var变量声明在函数外面时它的作用域是全局的,这意味着在整个窗口中可以使用在函数块外部使用var声明的任何变量。 var变量在函数内声明时是函数作用域 。这意味着它可用,只能在该函数中访问。   我们举一个例子: <script> var greeter = "Hello"; function hello() { var hi = "Hi"; } </script>   在这里,greeter是全局范围的,因为它存在于函数外部,而hello是函数作用域。所以我们不能在函数外部访问变量hi。所以,如果我们这样做:    var变量可以重新声明和更新   这个是比较好理解的    var变量提升

[JS] javascript基础语法

一个人想着一个人 提交于 2020-03-27 06:49:32
1.javascript是什么   js是具有面向对象能力的,解释性的程序设计语言. 2.js的类型   [基本类型]:string number boolean   [复合类型]:对象(对象,函数,数组)   [无类型]:null undefiend 3.typeof   语法:string typeof (变量名)  或者  string typeof 变量名   作用:返回这个变量的类型 4.块级作用域   js没有块级作用域的概念.if while等内声明的变量都是和外面声明的变量是同一作用域的. 5.运算符   ==和!=:是判断2个结果是否相等   in:属性是否属于某个对象   instanceof:变量是否属于某个类    add instanceof Function 6.数字类型   js中的数字类型都是浮点数.1===1.00   8进制:0开头  16进制:0x开头    7.NaN  Infinity  IsNaN  IsFinite   NaN:Not a Number    alert(0/0)   Infinity:无限的       alert(0.1/0)   boolean IsNaN(number):  判断不是数字   boolean IsFinite(number):  判断数字是不是有限的 8.string类型方法   string

JavaScript在HTML中的应用

限于喜欢 提交于 2020-03-27 06:48:56
JavaScript概述 JavaScript是基于对象和事件驱动的脚本语言,主要应用在客户端。 特点: 1,交互性(它可以做的就是信息的动态交互) 2,安全性(不允许直接访问本地硬盘) 3,跨平台性(只要是可以解释JS的浏览器都可以执行,和平台无关) JavaScript与Java不同 1,JS是Netscape公司的产品,前身是LiveScript;Java是Sun公司的产品,现在是Oracle公司的产品 2,JS是基于对象,Java是面向对象 3,JS只需解释就可以执行,Java需要先编译成字节码文件,再执行 4,JS是弱类型,Java是强类型 JavaScript与Html的结合方式 想要将其他代码融入到Html中,都是以标签的形式。 1,JS代码存放在标签对<script> js code... </script>中。 2,当有多个html页面使用到相同的JS脚本时,可以将JS代码封装到一个文件中,只要在script标签的src属性引入一个JS文件。(方便后期维护、扩展) 注意:如果在script标签中定义了src属性,那么标签中的内容不会被执行。 例:<script src="test.js" type="text/javascript"></script> 注:规范中script标签早期有一个属性language,而现在使用type属性。 JavaScript语法

js部分高级内容

守給你的承諾、 提交于 2020-03-27 06:06:01
数据类型 基本:String,Number,boolean(true,false),undefined(undefined),null(null) 引用类型:Object,Function(可以执行),Array(数值下标,有序) 特别地,null无值的对象(用来清空对象),NaN无值的数字,undefined不存在或者存在未赋值 typeof 返回数据类型的字符串形式(小写) 判断字符串,数值,布尔,函数可行。未定义和undefined都返回undefined也勉强可,null和其他引用类型返回object不可(null和undefined用===) instanceof判断实例对象与类(沿原型链向上找)的关系,返回布尔值 var声明局部变量(不可删),直接赋值沿原型链向上找成window的一个属性(可删) 沿作用域链找不到没定义报错,沿原型链找不到是undefined 只有通过属性改变的引用对象才使相同的改变 obj.age=15//有效 obj={age:15}//无效,更改了引用地址 function fn(obj){console.log(obj)}//函数传入的obj是传入参数的一个引用值,与原变量无关(重要),一种基本值,一种引用值(地址) 自动释放和垃圾回收器回收 function fn(){var b={name:'alice'}} //未被引用的才会被释放回收