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:的更多相关文章

  1. JS高级调试技巧:捕获和分析 JavaScript Error详解

    前端工程师都知道 JavaScript 有基本的异常处理能力.我们可以 throw new Error(),浏览器也会在我们调用 API 出错时抛出异常.但估计绝大多数前端工程师都没考虑过收集这些异常 ...

  2. JS高级面试题思路(装箱和拆箱、栈和堆、js中sort()方法、.js中Date对象中的getMounth() 需要注意的、开发中编码和解码使用场景有哪些)

    1.装箱和拆箱: 装箱:把基本数据类型转化为对应的引用数据类型的操作: var num = 123 // num var objNum = new Num(123) // object console ...

  3. js高级应用

    特别板块:js跨域请求Tomcat6.tomcat7 跨域设置(包含html5 的CORS) 需要下载两个jar文件,cors-filter-1.7.jar,Java-property-utils-1 ...

  4. Node.js高级编程读书笔记 - 4 构建Web应用程序

    Outline 5 构建Web应用程序 5.1 构建和使用HTTP中间件 5.2 用Express.js创建Web应用程序 5.3 使用Socket.IO创建通用的实时Web应用程序 5 构建Web应 ...

  5. 惰性函数——JS高级

    我们先来看一下js的异步提交. XHR我们在原生的时候常常用到,因为常用到,我们更多把封装到了工具库中 先看下他最常用的实现 // 旧方法 function createXHR() { var xhr ...

  6. 第20篇 js高级知识---深入原型链

    前面把js作用域和词法分析都说了下,今天把原型链说下,写这个文章费了点时间,因为这个东西有点抽象,想用语言表达出来不是很容易,我想写的文章不是简单的是官方的API的copy,而是对自己的知识探索和总结 ...

  7. [Node.js] 05 - Modules and Function

    一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码.JSON 或者编译过的C/C++ 扩展. 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的. No ...

  8. JS高级- OOP-ES5

    1. OOP 面向对象三大特点: 封装,继承,多态 封装: 问题: 构造函数可重用代码和结构定义,但无法节约内存 为什么: 放在构造函数内的方法定义,每new一次,都会反复创建副本——浪费内存 解决: ...

  9. Ext.js高级组件

    第二章:Ext.js高级组件 grid组件 普通方式 表格面板类Ext.grid.Panel xtype(别名):gridpanel.grid title标题.renderTo渲染至.width宽.h ...

  10. js高级之函数高级部分

    基于尚硅谷的尚硅谷JavaScript高级教程提供笔记撰写,加入一些个人理解 github源码 博客下载 原型与原型链 prototype : 显式原型属性,它默认指向一个Object空对象(即称为: ...

随机推荐

  1. x86寄存器总结

    X86寄存器 ·x86寄存器分类: 8个通用寄存器:EAX.EBX.ECX.EDX.ESI.EDI.ESP.EBP 1个标志寄存器:EFLAGS 6个段寄存器:CS.DS.ES.FS.GS.SS 5个 ...

  2. (转)学习ffmpeg官方示例transcoding.c遇到的问题和解决方法

    转自:https://blog.csdn.net/w_z_z_1991/article/details/53002416 Top 最近学习ffmpeg,官网提供的示例代码transcoding.c演示 ...

  3. nohup top -p 22452 -b >>jiu.log &

    解释一下: 1. nohup \$order & 后台执行 2. nohup \$order >>$file & 后台执行,并输入指定文件 3. top -p $num 使 ...

  4. Unity3D无限奔跑者Playmaker v1.5

    这款功能丰富的移动准备包内含使您自己的各种各样的3D游戏运行的一切要素.无需编程! 功能 1 - 响应式滑动控制2 - 投掷炮弹3 - 可破坏物体4 - 能力提升道具- 金币磁铁- 护盾- 继续密钥- ...

  5. Codeforces Beta Round #34 (Div. 2)

    Codeforces Beta Round #34 (Div. 2) http://codeforces.com/contest/34 A #include<bits/stdc++.h> ...

  6. MySQL基本SQL语句之数据插入、删除数据和更新数据

    一.INSERT插入数据: 方法一:批量插入 基本语法: INSERT INTO tb_name (col1, col2, ...) VALUES (val1, val2, ...)[,(val1, ...

  7. The following packages have unmet dependencies错误

    当出现类似这类错误: The following packages have unmet dependencies: python-dev : Depends: python (= 2.7.5-5ub ...

  8. Win7系统不能记忆窗口大小与位置解决方法

    似在某此系统优化后,无意发现系统在注销或重启后,打开资源管理器,它以默认大小及位置显示. 对于习惯自定义操作来说,甚为不便,遍找方法未有奏效者,但总萦绕心头,时时记起. 今日再找问题解决方法,难兄难弟 ...

  9. gridview 显示数据库中的超链接

    gridview默认情况下,数据库中存储的超链接,是不会显示的.它会直接把超链接字符显示出来. 例如:选定数据源后,gridview自动生成的列是这样的: <asp:BoundField Dat ...

  10. php的ob缓存详解

    前言引入 先看下面的代码: 这个代码,每次输出后都有sleep(1),表示程序执行暂定一秒,想象中浏览器应该是每隔1s钟,逐渐显示1到5的,然后事实情况确不是,浏览器访问的时候,等了5s种后,页面上一 ...