一. 基础

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表示一月。

转载于:https://www.cnblogs.com/clnchanpin/p/7092515.html

javascript学习笔记(一)-廖雪峰教程相关推荐

  1. Python基础学习笔记【廖雪峰】

    1. 入门 Python语法采用缩进方式,以#开头的语句是注释,当语句以:为结尾时,缩进的语句视为代码块 Python是动态语言,其变量本身类型不固定.与之对应的是静态语言.静态语言在定义变量时必须指 ...

  2. 【学习笔记】廖雪峰Python

    https://www.liaoxuefeng.com/wiki/1016959663602400 输入和输出 如果要让用户从电脑输入一些字符怎么办?Python提供了一个input(),可以让用户输 ...

  3. python学习笔记1——(廖雪峰教程,菜鸟教程)python基础

    python学习笔记1--(廖雪峰教程,菜鸟教程) https://www.liaoxuefeng.com(https://www.liaoxuefeng.com) 阿修视频 .Python基础(复习 ...

  4. Java基础知识 廖雪峰教程笔记

    Java基础知识 Java基础知识 java简介 名词解释 运行Java程序 Java基本数据类型 模块 包装类型 记录类 异常处理 Java异常 使用Commons Logging 使用log4j ...

  5. 前端获取div里面的标签_web前端教程JavaScript学习笔记DOM

    web前端教程JavaScript学习笔记 DOM一DOM(Document Object Model): 文档对象模型 其实就是操作 html 中的标签的一些能力 我们可以操作哪些内容 获取一个元素 ...

  6. 如何找到python廖雪峰基础_python3 基础 廖雪峰教程笔记-1

    廖雪峰教程文档:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143252 ...

  7. JavaScript学习笔记07【6个经典案例——电灯开关、轮播图、自动跳转首页、动态表格、表格全选、表单验证】

    Java后端 学习路线 笔记汇总表[黑马程序员] w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符. ...

  8. JavaScript学习笔记06【高级——JavaScript中的事件】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  9. JavaScript学习笔记05【高级——DOM对象】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  10. JavaScript学习笔记04【高级——DOM和事件的简单学习、BOM对象】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

最新文章

  1. Linux: CentOS 7下搭建高可用集群
  2. 我花了10个小时,写出了这篇K8S架构解析
  3. ffmpeg rtmp 封装发送函数_FFmpeg发送流媒体的命令(UDP,RTP,RTMP)
  4. HBase总结(十一)hbase Java API 介绍及使用示例
  5. Android 5.0及以上实现屏幕截图
  6. ADO.NET 快速入门(十五):ADO 应用转换为 ADO.NET
  7. lol战绩查询接口_LOL:莫名其妙被封号?3把躺赢局被说是代打
  8. 安装Red Hat Container Development Kit 2.2版本
  9. Android:应用商城
  10. 用python批量下载modis数据的速度怎么样_MODIS数据的简介和下载(五)——应用密钥的Python脚本下载...
  11. 证券行业日志审计需求分析,产品选型和实施建议
  12. Xcode5使用遇到的问题
  13. 神泣单机服务器维护,神泣单机版
  14. python生词本查单词译文_Kindle 阅读器“生词本”功能详细使用说明
  15. word怎么删除不要的页,即刻删除空白页
  16. 哲学家就餐问题与解决方案
  17. OGG基本框架、安装、运维、报错处理、监控命令
  18. vscode 连接ubuntu显示“试图写入的管道不存在”
  19. 前端做微信好友分享_前端-微信分享
  20. 这一年来在疫情下,作为沪漂的生活

热门文章

  1. pycuda installation error: command 'gcc' failed with exit status 1
  2. VTK嵌入MFC同步显示
  3. nginx 1.14.0 配置部署 thinkphp 5.1
  4. 从零开始netty学习笔记之BIO
  5. vcf文件(call variants得来的)怎么看变异是纯合还是杂合的
  6. Javascript正则表达式完全学习手册
  7. iOS技术周报-第28期
  8. 简述MVC思想与PHP如何实现MVC
  9. Spring框架人气暴涨 简洁高效是关键
  10. ASP.NET:页面保存为WORD出现的问题!