一   let 和 var 作用域

   1  普通用法

for (var i = 0; i < 5; i++) {

console.log(i);

}

console.log(i); //---结果是 5 ,因为var作用域不仅仅是当前模块。

for (let i = 0; i < 5; i++) {

console.log(i);

}

console.log(i); //---结果是i is not defined,因为let的作用只是当前模块。

结果都是: 0,1,2,3,4 ,因为是直接同步输出。

    ps: 可以试试,吧同样的代码放到定时器setTimeout(()=>{……});或 异步promise() 里面。

    2  箭头函数(()=>{})里面使用

   1  var

var a=6;

for(var a=0;a<4;a++){//var是全局的,同名的变量后面的会覆盖前面的。

  console.log(a); //正常的输出0,1,2,3
  setTimeout(()=>{//箭头函数本身没有this的引用,里面用的变量和方法都是指向外层的。

console.log(a); //直接写外层附近定义的变量即可,不要用this. 由于var是全局的,箭头函数里面引用都是同一个a,输出的结果都是一样的 4

console.log(this.a);//  this. 表示windows的对象, windows里面根本没有a. , 所以 这里输出 undefined.

},0);

}

console.log(a); // 箭头函数外使用变量也是 直接使用即可,不用this.  由于var同名的变量后面的会覆盖前面的,这里输出 4

console.log(this.a); // this. 表示windows的对象, windows里面根本没有a. , 所以 这里输出 undefined. ; 只有顶部data:{}下定义的字段,用的时候可以this.data.字段。

2  let 

let b=6;

for(let b=0;b<4;b++){//let作用域是当前块级, 同名定义的不会相互影响覆盖

console.log(b); //正常的输出0,1,2,3

setTimeout(()=>{//箭头函数本身没有this的引用,里面用的变量和方法都是指向外层的。

console.log(b);  //直接写外层附近定义的变量即可,不要用this. 由于let是当前块的,箭头函数里面引用都是不同的b ,输出结果会是 0,1,2,3 

console.log(this.b); //this. 表示windows的对象, windows里面根本没有b. , 所以 这里输出 undefined.

},0);

}

console.log(b);//箭头函数外使用变量也是 直接使用即可,不用this.   由于是let定义,所以不会覆盖。 输出最外层的

console.log(this.b);// this. 表示windows的对象, windows里面根本没有b. , 所以 这里输出 undefined. ; 只有顶部data:{}下定义的字段,用的时候可以this.data.字段。

总结处理{}的方法:???????

1 Object.keys(); object.values();

/** 通用处理 默认值 为0

item--表示传入的某条记录对象{}

MapKey--表示要处理 默认值 为0 的字段集合

MapKeyDefault---默认处理成0

一般用于处理 一层层级的数据记录{}; 更深的层级需要自己单独提出来处理,创建新字段(平级)

*/

dealItemVal(item = {}, MapKey = [], MapKeyDefault = 0) {

let obj = {}

//转成数组 --字段名称和值 -------object方法在andorid里面无法执行!!!

let ks = Object.keys(item),

vs = Object.values(item);

//遍历key--map

ks.forEach((value, index) => {

let huo = "";

//需要把默认值处理成0的 字段;其他的字段若false 默认值是“”

MapKey.includes(value) && (huo = MapKeyDefault)

//有字段非false 否则显示huo默认值!

obj[value] = vs[index] || huo;

})

return obj;

},

使用::::

//精简通用处理方式。。。

// let to0 = [

//     "courseCount",

//     "examCount",

//     "finishCourseNum",

//     "finishExamNum",

//     "percent"

// ];

// let dealValue = tools.dealItemVal(item, to0);

// let newItem = {

//     ...other,

//     stu_lastLearnCourseId,

//     stu_assign,

//     ...dealValue

// };

return newItem;

##补充文章 语句:

object方法在andorid里面无法执行(是因为wkwebview的内核偏低导致)!!!

方法2:

Const { 字段1 ,字段2,字段3,字段4……}=item;

????

3: 方法传递解构函数 和  默认参数值 。。。。。

????

????补充es6语法

Assign 合并对象,every循环可以中断,push pop unshit shit不能变量接收,foreach不能变量接收,for of返回item, for in返回index ,

Search !=-1 判断有没有,splice截取替换集合,contect合并数据,,,, 空{} []都是true, 1 和 -1都是true ,0是false…

???

2 判断空{}空[]

可以for in

也可通过json.StringFy()转成字符串比对==‘{}’

5.区分是集合{}还是对象[]?  无法判断是空[] 还是空{}

Object.prototype.toString.call(loginRes.serverInfo) === "[object Object]")

第二个大写。。。

3  扩展属性方法prototype

//声明----如果有此自定义 contains 直接用最好

// Array.prototype.contains = function (needle) {

//     for (i in this) {

//         if (this[i] == needle) return true;

//     }

//     return false;

// }

// //直接使用

// var x = Array();

// if(x.contains('foo')) {

//     // do something special

// }

js 开发过程中经验及总结记录的更多相关文章

  1. android(java) 开发过程中经验及总结记录

    android(java) 开发过程中经验及总结记录

  2. bootStrap table 和 JS 开发过程中遇到问题汇总

    1..bootStrap-table表头固定 在table定义的时候给高度属性就可以自动生成滚动条,并且固定表头[height: 220,] 2.为动态生成的DOM元素绑定事件 on("cl ...

  3. H5开发过程中修复的bug记录

    从2016年8月1日开始真正意义上的修复bug,也是自己开发之路的开端,希望在这里记录自己修bug过程中遇到的问题及解决方法,待能够自己开发需求的时候,计划记录开发新需求过程中遇到的问题,并且记录自己 ...

  4. ArcGIS JavaScript开发过程中,底图产生拼接缝问题

    ArcGIS JS开发过程中,地图产生了拼接缝 上图调用的是天地图,确认原地图服务是没有这种缝隙的. 其他人电脑上测试,发现没有此问题. 纠结了半天,群里问了大神,大神说是浏览器设置了缩放.... 取 ...

  5. 撰写一篇博客要求讲述四则运算2的设计思想,源程序代码、运行结果截图、编程总结分析,并按照PSP0级的要求记录开发过程中的时间记录日志。

    一.撰写一篇博客要求讲述四则运算2的设计思想,源程序代码.运行结果截图.编程总结分析,并按照PSP0级的要求记录开发过程中的时间记录日志. 1.设计思想: ①创建test.jsp建立第一个前端界面,提 ...

  6. web开发过程中经常用到的一些公共方法及操作

    进化成为程序猿也有段岁月了,所谓的经验,广度还是依旧,只不过是对于某种功能有了多种实现方式的想法.每天依旧不厌其烦的敲打着代码,每一行代码的回车似乎都有一种似曾相识的感觉.于是乎:粘贴复制,再粘贴再复 ...

  7. 开发过程中 的一些 补充知识点 + 关于mysql中的日期和时间函数?

    参考: https://www.jb51.net/article/23966.htm https://yq.aliyun.com/articles/260389 mysql中的 日期格式是: HHHH ...

  8. 一些关于angularJS的自己学习和开发过程中遇到的问题及解决办法

    这篇文章也许会不定时更新,主要记录这段时间内自己遇到的angularjs学习开发的一些问题的解决办法.本文以摘抄为主,主要目的还是将自己遇到的困惑在各个地方查到的解决办法的汇总,给自己留个备忘吧. 1 ...

  9. Unity项目开发过程中常见的问题,你遇到过吗?

    最近看到有朋友问一个unity游戏开发团队,需要掌握哪些知识之类的问题.事实上Unity引擎是一个很灵活的引擎,根据团队开发游戏类型的不同,对人员的要求也有差异,所以不能一概而论.但是,一些在Unit ...

随机推荐

  1. 张奎师弟参与devexpress chartControl绘图--解决了devexpress的chartControl控件不能添加系列的问题

    using DevExpress.XtraCharts; using System; using System.Collections.Generic; using System.ComponentM ...

  2. 第26章:MongoDB-索引

    ①索引 索引本质上是树,最小的值在最左边的叶子上,最大的值在最右边的叶子上,使用索引可以提高查询速度(而不用全表扫描),也可以预防脏数据的插入(如唯一索引). 索引通常能够极大的提高查询的效率,如果没 ...

  3. oracle死锁解决方法

    select SESS.sid, SESS.SERIAL#, LO.ORACLE_USERNAME, LO.OS_USER_NAME,      AO.OBJECT_NAME, LO.LOCKED_M ...

  4. 容器,表格 ,div,元素可左右拖动,滚动 css

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  5. C++ —— 重载、覆盖和隐藏

    一.重载 发生在同一个类当中,当在同一类当中定义了方法A,然后又定义了方法B,B和A的方法名相同,但是参数不同,那么再是称B重载了方法A. class test{ public: void A(); ...

  6. 常用模块xml,shelve,configparser,hashlib

    XML 什么XML:全称 可扩展标记语言 标记指的是代表某种含义的字符 XML<> 为什么需要XML 为能够在不同的平台间继续数据的交换 为了使交换的数据能让对方看懂 就需要按照一定的语法 ...

  7. Forward团队-爬虫豆瓣top250项目-成员简介与分工

    马壮:擅长html,css,分工:分析网站源码 邢云淇:掌握python,java 分工:爬虫部分代码编写 张良:熟练掌握数据库 分工:数据库部分代码编写 年光宇:掌握c#,python 分工:代码整 ...

  8. 关于FPGA的一些小见解

    Xilinx FPGA配置bit流文件 Xilinx FPGA的供电是采用USB作为电源,使用Verilog HDL或VHDL实现的逻辑电路通过Xilinx的综合工具生成bit流文件,通过Digile ...

  9. 锁——Java同步的基本思想

    翻译人员: 铁锚 翻译时间: 2013年11月13日 原文链接:  Monitors – The Basic Idea of Java synchronization 如果你上过操作系统课程,你就知道 ...

  10. PCI总线目标接口状态机设计

    module state_machine (devsel_l, trdy_l, stop_l, pci_ad_oe,      dts_oe, par_oe, bk_oe, pci_ad_en, hi ...