JavaScript笔记(6)
一、Date
- Date实例用来处理日期和时间。Date对象基于1970年1月1日(格林威治时间)世界标准时间起经过的毫秒数。
常用:
new Date();
new Date(value);
new Date(dateString);
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]); (注意月份是从0开始的)
参数:
如果没有输入任何参数,则Date的构造器会依据系统设置的当前时间来创建一个Date对象。
value:代表自1970年1月1日00:00:00 (世界标准时间) 起经过的毫秒数。
dateString:表示日期的字符串值。(忽略)
year:代表年份的整数值。为了避免2000年问题最好指定4位数的年份; 使用 1998, 而不要用 98.
month:代表月份的整数值从0(1月)到11(12月)。
day:代表一个月中的第几天的整数值,从1开始。
hour:代表一天中的小时数的整数值 (24小时制)。
minute:分钟数。
second:秒数。
millisecond:表示时间的毫秒部分的整数值
二、Math
- Math 是一个内置对象, 它具有数学常数和函数的属性和方法。但Math不是一个函数对象。
与其他全局对象不同的是,Math不是一个构造器。
Math的所有属性和方法都是静态的
Math.abs(x): 返回x的绝对值.
Math.ceil(x): 返回x向上取整后的值.
Math.floor(x): 返回小于x的最大整数。
Math.round(x): 返回四舍五入后的整数.
Math.sqrt(x): 返回x的平方根.
Math.pow(x,y): 返回x的y次幂.
Math.max([x[,y[,…]]]): 返回0个到多个数值中最大值.
Math.min([x[,y[,…]]]): 返回0个到多个数值中最小值.
Math.random(): 返回0到1之间的伪随机数.
Math.cos(x): 返回x的余弦值.
Math.sin(x): 返回正弦值.
Math.tan(x): 返回x的正切值.
角度转弧度:
角度*PI/180
弧度转角度:
弧度*180/PI
三、Global
- Global (全局)对象可以说是 ECMAScript 中最特别的一个对象了,因为不管你从什么角度上看,这个对象都是不存在的.
- 换句话说,不属于任何其他对象的属性和方法,最终都是它的属性和方法。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript
- 属性:
Object Function Array Date Math Infinity NaN null undefined
JSON (es5)
Generator Promise Map Set Symbol (es6)
方法:
eval() (出于安全性考虑,不用) isNaN() parseFloat(不用)
parseInt:将字符串两边的空格去掉,然后观察这个字符串是否以数字开头,如果以数字开头就转换成数字,否则就是NaN
四、包装类
- (隐式)组包:将基本数据类型 转换成 引用数据类型
(隐式)拆包:将引用数据类型 转换成 基本数据类型
显式)组包 : new Number(1)
(显式)拆包: test.valueof()
不同类型对象的valueOf()方法的返回值
对象 返回值
Boolean 布尔值。
Number 数字值。
String 字符串值。
Array 返回数组对象本身。
Date 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。
Function 函数本身。
Object 对象本身。这是默认情况。
Math 和 Error 对象没有 valueOf 方法
1、String
(1)获取字符串的长度:str.length
(2)获取字符串指定位置上的字符单元:
①:str.charAt(index)
作用:从一个字符串中返回指定的字符
语法:str.charAt(index)
参数:index 一个介于0和字符串长度减1之间的整数。(0~length-1)
返回值:指定的字符
注意点:如果没有提供索引,charAt()将使用0
如果超过字符串长度减1,charAt()将返回空白字符串
②:[index]
[]的形式也可以用来访问字符串中的指定字符,但这种方式是在ES5中定义的,部分浏览器会有兼容性问题。
(3)获取字符串在原字符串中的下标位置
①:str.indexOf
作用:在fromIndex位置开始搜索str中第一次出现searchValue的位置
语法:str.indexOf(searchValue[, fromIndex])
参数:
searchValue:一个字符串表示被查找的值
fromIndex 可选:开始查找的位置。可以是任意整数。默认值为 0。
返回值:指定值的第一次出现的索引; 如果没有找到 -1。
注意点:
如果 fromIndex < 0 则查找整个字符串(如同传进了 0)。
被查找的字符串是一个空字符串,此时返回 0
如果 fromIndex >= str.length,则该方法返回 -1,
被查找的字符串是一个空字符串,此时返回 str.length
②:str.lastindexOf
作用:在fromIndex位置开始搜索str中最后一次出现searchValue的位置
同上
(4)字符串截取
①:str.slice(beginSlice[, endSlice])
作用:提取一个字符串的一部分,并返回一新的字符串
语法:str.slice(beginSlice[, endSlice])
参数:
beginSlice:
从该索引(以0为基数)处开始提取原字符串中的字符。
endSlice:
可选。在该索引(以 0 为基数)处结束提取字符串。如果省略该参数,slice会一直提取到字符串末尾。
返回值: 返回一个从原字符串中提取出来的新字符串
注意:
如果beginSlice为负数,会被当做 sourceLength + beginSlice 看待,这里的sourceLength 是字符串的长度 。如果加完还是负数则看为0。endSlice同理
如果beginSlice >= endSlice,提出的是空白字符串
slice方法提取的范围是左闭右开的
②:str.substring(indexStart[, indexEnd])
与slice及其类似。但是需要注意的是
如果 indexStart 等于 indexEnd,substring 返回一个空字符串。
如果 indexStart 大于 indexEnd,则 substring 的执行效果就像两个参数调换了一样
如果任一参数小于 0 或为 NaN,则被当作 0。
如果任一参数大于 stringName.length,则被当作 stringName.length。
③:str.substr(start[, length])
作用:返回一个字符串中从指定位置开始到指定字符数的字符
语法:str.substr(start[, length])
参数:
start:开始提取字符的位置。
length:可选。提取的字符数
返回值: 返回一个从原字符串中提取出来的新字符串
注意:
如果start为负值,则被看作 strLength + start,其中 strLength 为字符串的长度。如果加完还是负数则看为0
如果 start 为正值,且大于或等于字符串的长度,则 substr 返回一个空字符串
如果 length 为 0 或负值,则 substr 返回一个空字符串
(5)字符串拼接
str.concat(string2, string3[, ..., stringN])
作用: 将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回
语法:str.concat(string2, string3[, ..., stringN])
参数:string2...stringN
和原字符串连接的多个字符串
返回值: 合并的新字符串
(6)大小写转化方法
str.toUpperCase()
str.toLowerCase()
返回值: 一个新的字符串,表示串转换为大/小写的调用字符
(7)首位去空格
作用:
trim() 方法会从一个字符串的两端删除空白字符。在这个上下文中的空白字符是所有的空白字符 (space, tab, no-break space 等)
语法:str.trim()
2.Number
Number对象是一个数值的对象包装器
3.Boolean
Boolean对象是一个布尔值的对象包装器
五、Error
- 通过Error的构造器可以创建一个错误对象。当运行时错误产生时,Error的实例对象会被抛出
六、强制类型转换
1.toString:
(先调用toString方法,在调用valueof方法)
基本类型值的字符串化规则为:
null 转换为 "null"
undefined 转换为 "undefined"
true 转换为 "true" ; false转换为"false"
数字的字符串化则遵循通用规则
1 转换为 "1" (当然可能会有指数的形式 1.07e21)
引用数据类型 ---> 字符串
先调用引用数据类型 toString方法 观察方法是否返回了基本数据类型
如果是基本数据类型 ---> 使用 基本类型值的字符串化规则
如果不是基本数据类型 ---> 调用valueof方法
后调用valueof方法
如果是基本数据类型 ---> 使用 基本类型值的字符串化规则
如果不是基本数据类型 ---> 报错
不同类型对象的valueOf()方法的返回值
对象 返回值
Boolean 布尔值。
Number 数字值。
String 字符串值。
Array 返回数组对象本身。
Date 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。
Function 函数本身。
Object 对象本身。这是默认情况。
Math 和 Error 对象没有 valueOf 方法
2.toNumber:
(先调用valueof方法,再调用toString方法)
它负责处理非数字 转化为 数字。
基本类型值的数字化规则为:
Null==>0 ; undefined==>NaN
Boolean:true==>1 false==>0
字符串:
就是把字符串两边的空白字符去掉,然后把两边的引号去掉,
看它能否组成一个合法的数字。
如果是,转化结果就是这个数字;否则,结果是NaN。
当然也有例外,比如空白字符串转化为数字的结果是0。
引用数据类型ToPrimitive(valueof - tostring)
3.toBoolen
假值 --->false
真值 ---> true
以下这些是假值:
undefined
null
false
+0 、 -0 和 NaN
""
真值就是假值列表之外的值。
4.ToPrimitive
检查该值是否有 valueOf() 方法。如果有并且返回基本类型值,就使用该值进行强制类型转换。
如果没有就使用 toString() 的返回值(如果存在)来进行强制类型转换。
如果 valueOf() 和 toString() 均不返回基本类型值,会产生 TypeError 错误
总结:
- 在js中只存在强制类型转换
强制类型转换分为:
显示强制类型转换:
toSring 将String函数 普通调用
toNumber 将Number函数 普通调用
- 隐式强制类型转换:
- 正号+()
toBoolen
==操作
+
字符串拼接
算术运算
正号
如果某个操作数是字符串 + 将进行拼接操作
遇到对象 则ToPrimitive()
toBoolean
(1) if (..) 语句中的条件判断表达式。
(2) for ( .. ; .. ; .. ) 语句中的条件判断表达式(第二个)。
(3) while (..) 和 do..while(..) 循环中的条件判断表达式。
(4) ? : 中的条件判断表达式。
(5) 逻辑运算符 || (逻辑或)和 && (逻辑与)左边的操作数(作为条件判断表达式)
a || b;
大致相当于 (roughly equivalent to):
a ? a : b;
a && b;
大致相当于 (roughly equivalent to):
a ? b : a; 返回值:表达式的结果
不一定是布尔值
==操作符
有和有 统一往数字转
无和无永远是true
有和无永远是fasle
NaN 不等 NaN
Array.prototype.valueOf=function () {
return true
}
console.log([1,2,3] == "1");
输出结果为 true
JavaScript笔记(6)的更多相关文章
- [Effective JavaScript 笔记] 第4条:原始类型优于封闭对象
js有5种原始值类型:布尔值.数字.字符串.null和undefined. 用typeof检测一下: typeof true; //"boolean" typeof 2; //&q ...
- [Effective JavaScript 笔记] 第5条:避免对混合类型使用==运算符
“1.0e0”=={valueOf:function(){return true;}} 是值是多少? 这两个完全不同的值使用==运算符是相等的.为什么呢?请看<[Effective JavaSc ...
- [Effective JavaScript 笔记]第3章:使用函数--个人总结
前言 这一章把平时会用到,但不会深究的知识点,分开细化地讲解了.里面很多内容在高3等基础内容里,也有很多讲到.但由于本身书籍的篇幅较大,很容易忽视对应的小知识点.这章里的许多小提示都很有帮助,特别是在 ...
- [Effective JavaScript 笔记]第27条:使用闭包而不是字符串来封装代码
函数是一种将代码作为数据结构存储的便利方式,代码之后可以被执行.这使得富有表现力的高阶函数抽象如map和forEach成为可能.它也是js异步I/O方法的核心.与此同时,也可以将代码表示为字符串的形式 ...
- [Effective JavaScript 笔记]第28条:不要信赖函数对象的toString方法
js函数有一个非凡的特性,即将其源代码重现为字符串的能力. (function(x){ return x+1 }).toString();//"function (x){ return x+ ...
- 从头开始学JavaScript 笔记(一)——基础中的基础
原文:从头开始学JavaScript 笔记(一)--基础中的基础 概要:javascript的组成. 各个组成部分的作用 . 一.javascript的组成 javascript ECMASc ...
- 【原】javascript笔记之Array方法forEach&map&filter&some&every&reduce&reduceRight
做前端有多年了,看过不少技术文章,学了新的技术,但更新迭代快的大前端,庞大的知识库,很多学过就忘记了,特别在项目紧急的条件下,哪怕心中隐隐约约有学过一个方法,但会下意识的使用旧的方法去解决,多年前ES ...
- JavaScript笔记目录
JavaScript笔记目录 一.JavaScript简介 二.在HTML中使用JavaScript ...持续更新中,敬请期待
- 蛋糕仙人的javascript笔记
蛋糕仙人的javascript笔记:https://www.w3cschool.cn/kesyi/kesyi-nqej24rv.html
- JavaScript笔记(第一章,第二章)
JavaScript笔记(第一章,第二章) 第一章: <meta http-equiv="Content-Type" content="text/html; cha ...
随机推荐
- Extjs4.2 tooltip 提示宽度问题解决
在Extjs4.2 的tooltip 提示,宽度被限制在了40px,感觉非常别扭,是个BUG,解决的方法,在ext-all-debug.js或ext-all.js中,找到例如以下的代码: Ext.de ...
- C++primer书店程序
#include <iostream> #include <string> #include <cassert> #include <algorithm> ...
- 6.5.2 C# 中的函数组合
6.5.2 C# 中的函数组合 C# 中的函数组合是可能的.但使用非常有限,这是部分是由于在 C# 中散应用不能非常easy使用.但更重要的是,由于大多数操作是用成员来写的.而不是函数.但我们至少能够 ...
- SQLite -- 嵌入式关系型数据库
SQLite -- 嵌入式关系型数据库 1.SQLite的数据类型:Typelessness(无类型) 1,能够保存不论什么类型的数据到表的随意列中 2.支持常见的类型如: NULL, VARCHAR ...
- js中编码的处理
今天修bug的时候对编码问题进行了解决.发现js中有一个escape()这个函数处理编码的问题. 定义跟方法: 语法 escape(string)String:必需,要被转义或者编码的字符串. 返回值 ...
- Cms WebSite 编译非常慢
第一次编译非常慢 如果遇到错误,中途中断的话. 下一次编译的时候,上一次已经编译过的文件,会非常快的略过.很快就会到上一次遇到错误的地方,继续往下进行编译.
- javascript中如何获取对象名
javascript中如何获取对象名 一.总结 一句话总结:将对象传入参数,看参数是否为函数(js中的对象和函数是一个意思么(函数肯定是对象)),对象参数.name属性即可获得 //版本4 funct ...
- VS10的一个问题
今天遇到一个问题,LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏.转一下网上的解决办法http://bbs.csdn.net/topics/390 ...
- 《剑指offer》数值的整数次方
一.题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 二.输入 double base, int exponent 三.输出 b ...
- 《剑指offer》二维数组中的查找
一.题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 二.输入描述 ar ...