一. 基础

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. PCB Genesis增加轮廓字 实现原理

    在Genesis增加汉字自带是不支持增加汉字的,如果需增加汉字需用到CAD 汉字库才可增加汉字,这里介绍一种脱离汉字库实现 Genesis增加轮廓字(如要变为实体,填空Surface可变为实体字) 一 ...

  2. ul和li里面的list-style

    对ul   list-type  只是设置ul的样式对li    list-type 是对li的综合样式设定  语法是 li-style:list-style-type/list-style-imag ...

  3. Python 39 数据库的数据类型

    一:整型 为什么需要 数据分类? 1.为了描述事物更加准确 2.描述起来更方便 3.节省内存空间 例:1 a 你     utf8 下 5个字节 1 a b c   unicode 6个字节 mysq ...

  4. C - Tram

    Problem description Linear Kingdom has exactly one tram line. It has n stops, numbered from 1 to n i ...

  5. C#:设置webBrowser框架与系统相对应的IE内核版本

    通常情况下,我们直接调用C#的webBrowser控件,默认的浏览器内核是IE7.  那么如何修改控件调用的默认浏览器版本呢? /// <summary> /// 修改注册表信息来兼容当前 ...

  6. C#中通过js实现个人用户和非个人用户的登陆

    实现用户的登录功能,这里举一个个人和非个人用户的登录的例子 前台代码: <ul class="login_list clearfix"> <li> < ...

  7. Oracle 生成数据字典

    SELECT ROWNUM 序号,A.COLUMN_NAME AS "字段名称",B.comments AS "字段描述", A.DATA_TYPE as 字段 ...

  8. angular js 球星

    <!DOCTYPE html>   <html lang="en">   <head>   <meta charset="UTF ...

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

    软工第五次小组会议 记录人:娄雨禛 会议地点:三教讨论区 会议时间:9:00-10:00 与会人员:软工小组成员 一.前端会议提要 前端分为“2+2”组合进行开发. 底层设计:齐天扬,刘鼎乾 界面美化 ...

  10. 题解 P3258 【[JLOI2014]松鼠的新家】(From luoguBlog)

    唯一能得分的题也被自己搞炸了,好的. 考场上读完题基本认定和lca脱不了干系,想了一会确认是树剖. 那么问题来了,考前一节课刚发现自己之前打的树剖是错的. 而且就算是错的我也没信心考场调出来. 于是打 ...