一. 基础

1.for in,for of和forEach

遍历的是对象的属性,因为数组也是对象,其内部的元素的索引就是其属性值。用该方式遍历数组就是获取了数组中的每一个元素的索引值(从0開始)。

而for of 则是直接遍历集合中的元素值本身。map、set和array都属于iterable类型的数据。都能够用for of来遍历:

var oMap = new Map([['anna',1],['mike',2],['betty',3]]);
for(var x of oMap){
alert(x); //输出每一个键值对
}

此外,最好的方式是使用forEach,iterable类型的数据有内置的方法forEach,该方法接收一个參数。每遍历一个元素就调用该方法一次:

var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {
// element: 指向当前元素的值
// index: 指向当前索引
// array: 指向Array对象本身
alert(element);
});

以该种方式遍历在map类型数据中,ele相应值。index相应键。

注意:forEach()方法是ES5.1标准引入的,你须要測试浏览器是否支持。

二. 函数

1.变量声明提升

注意提升的是声明。也就是说通过var 声明的变量在运行到声明语句之前使用了该变量是不会报错的。可是此时无法获取该变量的值。提升的时候并没有把赋值也提升了,该值为undefined,直到运行到该语句为这个变量赋值为止。

2.解决命名冲突的办法

将变量和函数都放到一个命名空间中。实际上就是定义了一个空对象,全部的变量和方法都作为该对象的属性和方法:

// 唯一的全局变量MYAPP:
var MYAPP = {}; // 其它变量:
MYAPP.name = 'myapp';
MYAPP.version = 1.0; // 其它函数:
MYAPP.foo = function () {
return 'foo';
};

3.ES6引入了let用来声明块级作用域内的变量,const来声明常量.

4.apply的使用方法

除了改动函数的作用域外(指定this值),还能够改变已有函数的行为,即为已经提供了的函数添加新的定义,比如统计调用了多少次parseInt:

var count = 0;
var oldParseInt = parseInt; // 保存原函数 window.parseInt = function () {
count += 1;
return oldParseInt.apply(null, arguments); // 调用原函数,null表示当做普通调用,不指定this值
}; // 測试:
parseInt('10');
parseInt('20');
parseInt('30');
count; // 3

5.Array.map(function(arg){})

对数组中每一个元素调用function方法,将结果作为新的数组返回。不会改变原来的数组。

參数构成和forEach方法相似。

6.闭包

一个函数中包括了闭包,每次调用外部函数,都会生成一个新的内部函数。也就是说闭包在外部函数调用时都是新生成的。

返回闭包时牢记的一点就是:返回函数不要引用不论什么循环变量,或者兴许会发生变化的变量。

假设一定要引用循环变量怎么办?方法是再创建一个函数,用该函数的參数绑定循环变量当前的值,不管该循环变量兴许怎样更改。已绑定到函数參数的值不变:

例如以下代码中。參数n绑定了每一个i(思考活动对象中存储的内容包括了形參及其值,内部闭包会沿着作用域链找到外部马上运行的匿名函数活动对象中存储的变量值):

function count(){
var f_arr=[];
for(var i=1;i<=3;i++){
var rs=(function(n){
return function(){
return n*n;
}
})(i); //创建匿名函数并马上运行
f_arr.push(rs);
}
return f_arr;
}

闭包能够延迟运行,或者提供了一个能够訪问到函数私有变量的入口(闭包携带了状态)。

三. 标准对象

1.JSON

  • 把一个JavaScript对象转换成JSON对象:
JSON.stringify(JSobj,replacer,spliter)

replacer(key,value)能够是数组,数组中的元素是转换时要保留的JS对象的属性。也能够是一个函数,该函数对JS对象中的键值做了某些处理后返回。spliter是转换后的缩进等切割。

比如:

function convert(key, value) {
if (typeof value === 'string') {
return value.toUpperCase();
}
return value;
} var xiaoJson=JSON.stringify(xiaoming, convert, ' ');

JSON对象反序列化为JS对象:

function addClassmate(key, value){
if(key=="name"){
return value+"同学";
}
return value;
}
var xiaoObj=JSON.parse(xiaoJson,addClassmate);

2.Date对象

data对象中月份是从0開始的,也就是0表示一月。

javascript学习笔记(一)-廖雪峰教程的更多相关文章

  1. JavaScript学习笔记[0]

    JavaScript学习笔记[0] 使用的是廖雪峰JavaScript教程. 数据类型 Number 表示数字,不区分浮点整形. === 比较时不转化数据类型. == 反之. NaN与任何值都不想等, ...

  2. JavaScript:学习笔记(5)——箭头函数=>以及实践

    JavaScript:学习笔记(5)——箭头函数=>以及实践 ES6标准新增了一种新的函数:Arrow Function(箭头函数).本文参考的链接如下: MDN箭头函数:https://dev ...

  3. Java程序猿的JavaScript学习笔记(汇总文件夹)

    最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...

  4. Java程序猿的JavaScript学习笔记(8——jQuery选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  5. Java程序猿JavaScript学习笔记(2——复制和继承财产)

    计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...

  6. Java程序猿的JavaScript学习笔记(3——this/call/apply)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  7. Java程序猿JavaScript学习笔记(4——关闭/getter/setter)

    计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...

  8. Java程序猿JavaScript学习笔记(14——扩大jQuery UI)

    计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...

  9. javascript学习笔记(四) Number 数字类型

    数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数  toExponential() 方法 用科学 ...

  10. JavaScript学习笔记之数组(二)

    JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...

随机推荐

  1. CRMEB系统就是集客户关系管理+营销电商系统,能够真正帮助企业基于微信公众号、小程序实现会员管理、数据分析,精准营销的电子商务管理系统。可满足企业新零售、批发、分销、等各种业务需求。

    **可以快速二次开发的开源小程序商城系统源码**源码开源地址:https://github.crmeb.net/u/LXT 项目介绍: CRMEB系统就是集客户关系管理+营销电商系统,能够真正帮助企业 ...

  2. DeltaFish 校园物资共享平台 第四次小组会议

    一.上周记录汇报 齐天扬 学习慕课HTML至14章.构建之法10-14章 李   鑫 学习制作简易的JSP页面和servlet,看完关于HTML的慕课 陈志锴 学习编制简易JSP页面和servlet, ...

  3. 图片懒加载插件echo.js——改造

    今天做一个列表项需要用到懒加载,搜到网友推荐的echo.js,试用了一下,还不错.除了懒加载,还提供了throttle——节流,即用户快速滑动列表时,很快滑过的项的图片不会加载,只会加载最后停下来的位 ...

  4. session 存入redis 或 memcache 的方法

      Session简介 session,中文经常翻译为会话,其本来的含义是 指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session.有时候我们 ...

  5. 安卓代码迁移:Program "sh" not found in PATH

    Description    Resource    Path    Location    Type  Program  "sh"  not  found in PATH 参考链 ...

  6. git解决内容冲突

    内容冲突的冲突处理 两个用户修改了同一个文件的同一块区域,git会报告内容冲突. 解决办法:打开发生冲突的文件,会发现 <<<<<<< HEADtest in ...

  7. RSA PKCS1 填充方式

    1)RSA_PKCS1_PADDING 填充模式,最常用的模式 要求:输入 必须 比 RSA 钥模长(modulus) 短至少11个字节, 也就是 RSA_size(rsa) – 11    如果输入 ...

  8. react功能实现-数组遍历渲染

    在react中如何将一个数组遍历,并且逐个渲染在页面上? 1.在jsx渲染中,如果这个变量是一个数组,则会展开这个数组的所有成员. var arr = [ <h1>Hello world! ...

  9. 15.5.4 【Task实现细节】一个入口搞定一切

    如果你反编译过异步方法(我非常希望你会这么做),会看到状态机中的 MoveNext() 方法 非常长,变化非常快,像是一个计算有多少 await 表达式的函数.它包含原始方法中的所有逻辑, 和处理所有 ...

  10. 编写 Shell 脚本的最佳实践

    转自:http://kb.cnblogs.com/page/574767/ 前言 由于工作需要,最近重新开始拾掇shell脚本.虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看 ...