JS高级-Date- Error-***Function:
1. Date:
API:
1. 8个单位:
FullYear Month Date Day
Hours Minutes Seconds Milliseconds
2. 每個單位上都有一對兒get/set方法
其中: .getXXX() 用于获取单位的数值
.setXXX(值) 用于修改单位的数值
特例: Day,没有set
3. 取值范围:
Month: 0~11 计算机中的月份数,总是比现实中小1
需要修正
Date: 1~31
Day: 0~6
Hours: 0~23
Minutes/Seconds: 0~59
计算: 2种:
1. 两日期对象可相减,结果是毫秒差
2. 计算任意一个单位的值:
3步:
1. 取出单位的值: var n=date.getXXX();
2. 做加减
3. 修改单位的值: date.setXXX(n)
强调: setXXX() 可自动调整时间进制
简写: now.setXXX(now.getXXX()+n);
问题: 直接修改原日期
解决: 先复制原日期,再用副本修改新日期
日期格式化:
date.toString() 转为当地时间的完整格式
date.toLocaleString() 转为当地时间的简化版格式
date.toLocaleDateString() 仅保留日期部分
date.toLocaleTimeString() 仅保留时分秒部分
date.toGMTString() 转为国际标准时间(0时区)
2. Error:
什么是: 保存错误信息
错误: 程序执行过程中,导致程序无法正常执行的异常情况
后果: 程序都会强行退出
错误处理: 即使出错,也保证程序不中断退出的一种机制
何时: 只要希望,即使出错,也保证程序不中断退出
如何错误处理:
try{
可能出错的正确代码
}catch(err){
//err: 自动获得错误的信息
只有发生错误,才执行的错误处理代码:
1. 提示, 2. 记录日志, 3. 释放资源
}
优化: 尽量用if...else 代替try catch
Error: 鄙视: js中共有几种错误类型: 6种:
1. SyntaxError: 语法错误
2. ReferenceError: 要用的变量没找到
3. TypeError: 类型错误: 错误的使用了类型或类型的方法
4. RangeError: 范围错误: 参数超范围:
强调: js中数组下标超范围不报错!
5. URIError 6. EvalError
主动抛出错误:
何时: 团队协作开发中,程序的作者向程序的调用者提示错误的使用了程序。
3. Function:
什么是: 封装一段代码段的对象
为什么: 代码重用
何时: 如果一段代码可能被反复使用
如何: 3种:
1. 声明:
function 函数名(参数列表){
函数体;
return 返回值
}
问题: 被声明提前hoist
解决: 用赋值方式创建函数
2. 赋值:
var函数名=function (参数列表){
函数体;
return 返回值
}
揭示: 函数其实是一个对象
function关键词,其实是创建一个函数对象的意思
函数名其实就是一个普通的变量
3. 用new:
var
fun=new Function("a","b","return a-b");
鄙视: 以下定义函数正确的是:
function fun(a,b){return a-b}
var fun=function(a,b){return a-b}
var
fun=new Function(a,b,"return a-b")
X
var fun=new Function("a","b","return a-b")
重载overload:
什么是: 相同函数名,不同参数列表的多个函数,在调用时可根据传入参数的不同,自动选择匹配的函数调用。
为什么: 减少API的数量,减轻调用者的负担
何时: 如果一项任务,可能根据传入参数的不同,执行不同的逻辑时
比如: arr.slice(starti,endi+1)
arr.slice(starti)
arr.slice()
arr.splice(starti,n)
arr.splice(starti,0,值1,值2,....)
arr.splice(starti,n,值1,值2,....)
如何:
问题: js默认不支持重载!
为什么: js不允许多个同名函数同时存在
解决: arguments
每个函数内,默认都会自动创建一个arguments对象
arguments对象可自动接收所有传入函数的参数值
arguemnts是: 保存所有参数值的类数组对象
相同: 1. 下标, 2.
.length, 3. for遍历
不同: 类型不同, API不通用
强调: 如果同时定义了参数变量和arguments
则arguments中的值和参数变量中的值始终是共用同一个值。
垃圾回收: 鄙视: 谈谈你对垃圾回收的理解
垃圾: 不再被任何变量引用的对象
为什么: 内存空间都是有限的
垃圾回收: js引擎会自动释放不再被使用的对象的内存
垃圾回收器: 专门回收不再被使用的对象的小程序
随主程序启动,并伴随主程序并行执行
随时记录每个对象的引用次数
一旦发现一个对象不再被引用,则释放该对象
匿名函数:
什么是: 创建函数时,不指定函数名
为什么: 节约内存
何时: 希望一旦一个函数使用后,不会再使用,立刻释放
如何: 2种:
1. 回调:
比如:
arr.sort(function(a,b){return a-b})
str.replace(正则, function(kw){ return 新值 })
setInterval(function(){ ... }, 间隔ms)
2.
自调: 定义函数后,立刻调用自己
为什么: 避免使用全局变量,避免内存泄露/全局污染
何时: 今后所有js代码,都应该放在匿名函数自调中,不再使用全局变量
如何: (function(){
... })()
作业: function
add(){
}
console.log(add(1,2));//3
console.log(add(1,2,3));//6
console.log(add(1,2,3,4,5));//15
JS高级-Date- Error-***Function:的更多相关文章
- JS高级调试技巧:捕获和分析 JavaScript Error详解
前端工程师都知道 JavaScript 有基本的异常处理能力.我们可以 throw new Error(),浏览器也会在我们调用 API 出错时抛出异常.但估计绝大多数前端工程师都没考虑过收集这些异常 ...
- JS高级面试题思路(装箱和拆箱、栈和堆、js中sort()方法、.js中Date对象中的getMounth() 需要注意的、开发中编码和解码使用场景有哪些)
1.装箱和拆箱: 装箱:把基本数据类型转化为对应的引用数据类型的操作: var num = 123 // num var objNum = new Num(123) // object console ...
- js高级应用
特别板块:js跨域请求Tomcat6.tomcat7 跨域设置(包含html5 的CORS) 需要下载两个jar文件,cors-filter-1.7.jar,Java-property-utils-1 ...
- Node.js高级编程读书笔记 - 4 构建Web应用程序
Outline 5 构建Web应用程序 5.1 构建和使用HTTP中间件 5.2 用Express.js创建Web应用程序 5.3 使用Socket.IO创建通用的实时Web应用程序 5 构建Web应 ...
- 惰性函数——JS高级
我们先来看一下js的异步提交. XHR我们在原生的时候常常用到,因为常用到,我们更多把封装到了工具库中 先看下他最常用的实现 // 旧方法 function createXHR() { var xhr ...
- 第20篇 js高级知识---深入原型链
前面把js作用域和词法分析都说了下,今天把原型链说下,写这个文章费了点时间,因为这个东西有点抽象,想用语言表达出来不是很容易,我想写的文章不是简单的是官方的API的copy,而是对自己的知识探索和总结 ...
- [Node.js] 05 - Modules and Function
一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码.JSON 或者编译过的C/C++ 扩展. 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的. No ...
- JS高级- OOP-ES5
1. OOP 面向对象三大特点: 封装,继承,多态 封装: 问题: 构造函数可重用代码和结构定义,但无法节约内存 为什么: 放在构造函数内的方法定义,每new一次,都会反复创建副本——浪费内存 解决: ...
- Ext.js高级组件
第二章:Ext.js高级组件 grid组件 普通方式 表格面板类Ext.grid.Panel xtype(别名):gridpanel.grid title标题.renderTo渲染至.width宽.h ...
- js高级之函数高级部分
基于尚硅谷的尚硅谷JavaScript高级教程提供笔记撰写,加入一些个人理解 github源码 博客下载 原型与原型链 prototype : 显式原型属性,它默认指向一个Object空对象(即称为: ...
随机推荐
- poj1256(贪心+并查集)
题目链接:http://poj.org/problem?id=1456 题意:给n件商品的价格和卖出截至时间,每一个单位时间最多只能卖出一件商品,求能获得的最大利润. 思路:首先是贪心,为获得最大利润 ...
- Centos 7 MariaDB Galera cluster 部署
一.安装环境准备 1.系统: CentOS Linux release 7.4.1708 (Core) 2.hosts 10.6.32.51 openstack1 10.6.32.52 opensta ...
- SystemVerilog 带输出的task
1.task 的定义,输出定义为数组. /*- genRndPkt(): Generates random packet with the given length.*/ task genRndPkt ...
- Python os.getcwd()
Python os.getcwd() 方法 Python OS 文件/目录方法 概述 os.getcwd() 方法用于返回当前工作目录. 语法 getcwd()方法语法格式如下: os.getcwd ...
- python字典设置初始值setdefault()与get()
L = ['you','me','you','me','you','me','you'] D = {} for i in L: D[i] += 1 print(D) 执行以下代码会发生错误 Trace ...
- http://www.bugku.com:Bugku——jsfuckWEB5(http://120.24.86.145:8002/web5/index.php)
今天又做了bugku上面的一道题.使用到了jsfuck,它是什么捏? 它是Javascript原子化的一种简易表达方式,用[]()!+就可以表示所有的Javascript字符,不依赖于浏览器. ...
- eclipse项目运行文件位置
位置:E:\eclipseWorkSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\svnadmin
- java实现rabbitMQ延时队列详解以及spring-rabbit整合教程
在实际的业务中我们会遇见生产者产生的消息,不立即消费,而是延时一段时间在消费.RabbitMQ本身没有直接支持延迟队列功能,但是我们可以根据其特性Per-Queue Message TTL和 Dead ...
- linux查看目录下所有文件内容中是否包含某个字符串
转发自:http://blog.csdn.net/yimingsilence/article/details/76071949 查找目录下的所有文件中是否含有某个字符串 find .|xargs gr ...
- 包含了重复的“Content”项。.NET SDK 默认包含你项目目录中的“Content”项。可从项目文件中删除这些项;如果希望将其显式包含在项目文件中,可将“EnableDefaultContentItems”属性设置为“false”
从.netcore 1.1 升级到2.0时遇到该问题. 参考http://www.cnblogs.com/xishuai/p/visual-studio-for-mac.html 根据提示可知(我是看 ...