var函数

jsday4笔记

谁都会走 提交于 2019-12-22 01:20:53
函数 为什么要有函数 如果要在多个地方求1-100之间所有数的和,应该怎么做? 概念:当它被调用时执行的可重复使用的代码块。 什么是函数 函数的作用就是封装一段代码,将来可以重复使用。 就是函数,起个名字(函数名),在后续开发中可以反复调用 函数的定义 函数声明式 function 函数名 ( ) { // 函数体 } 函数表达式 var fn = function ( ) { // 函数体 } 特点: 函数声明的时候,函数体并不会执行,只要当函数被调用的时候才会执行。 函数一般都用来干一件事情,需用使用动词+名词,表示做一件事情 tellStory sayHello 等 函数的调用 调用函数的语法: 函数名 ( ) ; 特点: 函数体只有在调用的时候才会执行,调用需要()进行调用。 可以调用多次(重复使用) 代码示例: // 声明函数 function sayHi ( ) { console . log ( "吃了没?" ) ; } // 调用函数 sayHi ( ) ; // 求1-100之间所有数的和 function getSum ( ) { var sum = 0 ; for ( var i = 0 ; i < 100 ; i ++ ) { sum += i ; } console . log ( sum ) ; } // 调用 getSum ( ) ; 函数的参数

ES6 对象的扩展

有些话、适合烂在心里 提交于 2019-12-22 00:27:29
属性的简洁表示法 ES6 允许直接写入变量和函数作为对象的属性和方法。 var foo = 'bar' var baz = {foo} baz // {foo: 'bar'} // 等同于 var baz = {foo: foo} ES6 允许在对象中只写属性名,不写属性值。属性值等于属性名所代表的变量。 function f(x, y) { return {x, y} } // 等同于 function f(x, y) { return {x: x, y: y} } 方法也可以简写 var o = { method() { return 'hello' } } // 等同于 var o = { method: function() { return 'hello' } } 属性名表达式 JavaScript定义对象的属性有两种方式: obj.foo = true obj['a' + 'bc'] = 123 方法一直接使用标识符作为属性名 方法二使用表达式作为属性名 但是如果使用字面量方式定义对象(使用大括号),则在ES5 中只能使用方法一定义属性。 es6 允许字面量定义对象时用方法二(表达式作为对象的属性名) 属性名表达式与简洁表达式不能同时使用,否则会报错 // 报错 var foo = 'bar' var bar = 'abc' var baz = { [foo] }

深入理解JavaScript系列(7):S.O.L.I.D五大原则之开闭原则OCP

我们两清 提交于 2019-12-21 09:38:08
前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第2篇,开闭原则OCP(The Open/Closed Principle )。 开闭原则的描述是: Software entities (classes, modules, functions, etc.) should be open for extension but closed for modification.软件实体(类,模块,方法等等)应当对扩展开放,对修改关闭,即软件实体应当在不修改的前提下扩展。 open for extension(对扩展开放)的意思是说当新需求出现的时候,可以通过扩展现有模型达到目的。而Close for modification(对修改关闭)的意思是说不允许对该实体做任何修改,说白了,就是这些需要执行多样行为的实体应该设计成不需要修改就可以实现各种的变化,坚持开闭原则有利于用最少的代码进行项目维护。 英文原文:http://freshbrewedcode.com/derekgreer/2011/12/19/solid-javascript-the-openclosed-principle/ 问题代码 为了直观地描述,我们来举个例子演示一下,下属代码是动态展示question列表的代码(没有使用开闭原则)。 // 问题类型var AnswerType = {

IndexedDB浏览器数据库

非 Y 不嫁゛ 提交于 2019-12-21 05:06:10
IndexedDB 浏览器数据库 <script> // 数据库数据建立过程 // 1. 新建数据库 var db; // 删除数据库信息 // window.indexedDB.deleteDatabase('project'); 如图删除数据库 project : // 打开数据库 var DBOpenRequest = window.indexedDB.open('project', 1); // 如果没有当前数据库会自动创建,版本号如果改变会对数据库自动数据库升级; // 表示数据库打开成功: DBOpenRequest.onsuccess = function(event) { // 存储数据结果 db = DBOpenRequest.result; // 成功后才可以对数据库进行操作,不然会报错; // add(); // 新增数据 // read(); // 读取数据 // update(); // 更新数据 // remove(); // 删除数据 // readAll(); // 遍历数据 nameSearch(); // 使用索引搜索 console.log(' 存储数据结果 1'); }; // 表示数据库打开失败: DBOpenRequest.onerror = function (event) { console.log(' 数据库打开报错 '); };

HTML5 LocalStorage 本地存储

荒凉一梦 提交于 2019-12-21 04:52:20
1.前言 HTML5 storage提供了一种方式让网站能够把信息存储到你本地的计算机上,并再以后需要的时候进行获取。这个概念和cookie相似,区别是它是为了更大容量存储设计的。Cookie的大小是受限的,并且每次你请求一个新的页面的时候cookie都会被发送过去。HTML5的storage是存储在你的计算机上,网站在页面加载完毕后可以通过Javascript来获取这些数据。首先自然是检测浏览器是否支持本地存储。在HTML5中,本地存储是一个window的属性,包括localStorage和sessionStorage,从名字应该可以很清楚的辨认二者的区别,前者是一直存在本地的,后者只是伴随着session,窗口一旦关闭就没了。二者用法完全相同,这里以localStorage为例。 if(window.localStorage){ alert('支持localStorage'); }else{ alert('不支持localStorage'); } 2.基本用法 存储数据的方法就是直接给 window.localStorage 添加一个属性,例如: window.localStorage.a 或者 window.localStorage["a"] 。它的读取、写、删除操作方法很简单,是以键值对的方式存在的,如下: localStorage.name = "kobi";// 设置

迷迷糊糊

可紊 提交于 2019-12-21 01:44:39
if语法结构 if语句 //if双分支 // var a = 40; // if(a<=50){ // alert("张三"); // }else{ // alert("李四"); // } //if多分支 // var a = Number(prompt("请输入...")); // if(a>=90&&a<=101){ // alert("优生"); // }else if(a>=80&&a>=70&&a<=101){ // alert("中上"); // }else if(a>=60&&a<=70&&a<=101){ // alert("一般"); // }else if(a<60&&a<=101){ // alert("不及格"); // } switch语句 switch //switch多分支 // var a =Number(prompt("请输入")); // switch(a){ // case 1: // alert("星期一"); // break; // case 2: // alert("星期二"); // break; // case 3: // alert("星期三"); // break; // case 4: // alert("星期四"); // break; // case 5: // alert("星期五"); // break; //

对Json的各种遍历方法

雨燕双飞 提交于 2019-12-20 17:45:08
慎用for in函数(有可能由于原型链的问题导致遍历问题); 如果要是用for in 一定要使用if (obj1.hasOwnProperty(key)) {}先做判断 解决方法 :1.eval(),也不推荐     2.for of (es6) 对JSON对象的key值处理方法 Javascript代码 var json = '{"a":"1", "b":"2"}'; var data = eval( '('+ json + ')'); alert(data.a); alert(data[ 'a']); 这样两种方式都可以取到json中的值。 但是 当key的值为数字 时,只能使用类似数组下表的访问方式取值。 Javascript代码 var json = '{"0":"a", "1":"b", "length":2}'; var data = eval( '(' + json + ')'); //alert(data.0); //报错,此方式不可用 alert(data[ '0']); alert(data[0]); //注意此写法与数组用下标访问是相同的 alert(data.length) //貌似数组的长度 1.使用json时,通常都使用第一种方式,且key一般应使用合法的变量名(字母或下划线开头的包括字母、下划线和数字的字符串) 2.对象的两种访问方式:data

node异步转同步,KO 恶魔金字塔

前提是你 提交于 2019-12-20 14:51:16
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前言 Nodejs框架类库很多,功能相近的框架,本来只打算学一种写一种。之前写过流程控制框架 windjs文章 ,本来是想着要支持一下“国人框架”。无奈啊,作者竟然放弃了维护,国人真的不靠谱啊! “流程控制”本来是件比较简单的事,但是由于Nodejs的异步架构的实现方法,对于需要同步的业务逻辑,实现起来就比较麻烦。嵌套3-4层,代码就会变得的支离破碎了! 今天就遇到了一个业务逻辑,连续对数据库操作,前后有依赖。让我们看看Async是如何解决问题的。 不用不知道,一用真强大!! 目录 Async介绍 Async安装 Async函数介绍 async_demo使用介绍 场景:对数据库的连续操作 async_demo我的分支 1. Async介绍 Async是一个流程控制工具包,提供了直接而强大的异步功能。基于Javascript为Node.js设计,同时也可以直接在浏览器中使用。 Async提供了大约20个函数,包括常用的 map, reduce, filter, forEach 等,异步流程控制模式包括,串行(series),并行(parallel),瀑布(waterfall)等。 项目地址: https://github.com/caolan/async 2. Async安装 我的系统环境 win7 64bit

JavaScript中const、var和let区别浅析

喜夏-厌秋 提交于 2019-12-20 10:26:01
let是修复了var的作用域的一些bug,变的更加好用。let是更好的var。var的作用于是函数作用于,而let是块级别(大括号括起来的内容) const声明的变量只可以在声明时赋值,不可随意修改,这是最大的特点。 使用var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象; 使用let声明的变量,其作用域为该语句所在的代码块内,不存在变量提升; 使用const声明的是常量,在后面出现的代码中不能再修改该常量的值。 1.const定义的变量不可以修改,而且必须初始化 。 1 2 3 4 5 const b = 2; //正确 // const b;//错误,必须初始化 console.log( '函数外const定义b:' + b); //有输出值 // b = 5; // console.log('函数外修改const定义b:' + b);//无法输出 2.var定义的变量可以修改,如果不初始化会输出undefined,不会报错。 1 2 3 4 5 6 7 8 9 var a = 1; // var a;//不会报错 console.log( '函数外var定义a:' + a); //可以输出a=1 function change(){ a = 4; console.log( '函数内var定义a:' + a); //可以输出a=4 } change();

json.stringfy()和json.parse()

孤人 提交于 2019-12-20 10:05:09
json.stringfy()将对象、数组转换成字符串;json.parse()将字符串转成json对象。 json.stringfy(): 语法:   JSON.stringify(value [, replacer] [, space]) value:是必选字段。就是你输入的对象,比如数组,类等。 replacer:这个是可选的。它又分为2种方式,一种是数组,第二种是方法。   情况一:replacer为数组时,通过后面的实验可以知道,它是和第一个参数value有关系的。一般来说,系列化后的结果是通过键值对来进行表示的。 所以,如果此时第二个参数的值在第一个存在,那么就以第二个参数的值做key,第一个参数的值为value进行表示,如果不存在,就忽略。   情况二:replacer为方法时,那很简单,就是说把系列化后的每一个对象(记住是每一个)传进方法里面进行处理。 space:就是用什么来做分隔符的。   1)如果省略的话,那么显示出来的值就没有分隔符,直接输出来 。   2)如果是一个数字的话,那么它就定义缩进几个字符,当然如果大于10 ,则默认为10,因为最大值为10。   3)如果是一些转义字符,比如“\t”,表示回车,那么它每行一个回车。   4)如果仅仅是字符串,就在每行输出值的时候把这些字符串附加上去。当然,最大长度也是10个字符。 下面用实例说明;    1