1 解释型语言, 动态类型弱类型的语言
在运行的时候将程序翻译成机器语言, 在运行期间才去做数据类型检测; 解释型语言在运行时需要解释器, JS 的解释器被称为 JavaScript 引擎, 是浏览器的一部分
2 入门
请注意, JavaScript 严格区分大小写
要特别注意相等运算符 ==JavaScript 在设计时, 有两种比较运算符:
第一种是 == 比较, 它会自动转换数据类型再比较, 很多时候, 会得到非常诡异的结果;
第二种是 === 比较, 它不会自动转换数据类型, 如果数据类型不一致, 返回 false, 如果一致, 再比较
由于 JavaScript 这个设计缺陷, 不要使用 == 比较, 始终坚持使用 === 比较
2.1 数据类型 number
JavaScript 不区分整数和浮点数, 统一用 Number 表示
NaN 这个特殊的 Number 与所有其他值都不相等, 包括它自己:
NaN === NaN //false
唯一能判断 NaN 的方法是通过 isNaN() 函数:
isNaN(NaN); // true
浮点数在运算过程中会产生误差, 因为计算机无法精确表示无限循环小数要比较两个浮点数是否相等, 只能计算它们之差的绝对值, 看是否小于某个阈值:
- 1 / 3 === (1 - 2 / 3); // false
- Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true
2.2 字符串类型 (String)
需要特别注意的是, 字符串是不可变的, 如果对字符串的某个索引赋值, 不会有任何错误, 但是, 也没有任何效果
concat() 将两个字符串连接起来, 返回一个连接后的字符串
indexOf() 返回子串第一次出现的索引
charAt() 返回指定位置的字符要获取字符串某个指定位置的字符, 使用类似 Array 的下标操作, 索引号从 0 开始 str(0)
lastIndexOf() 返回子串最后一次出现的索引
substring(i,j) 截取字符串, i 为开始位置, j 为结束位置 (不包含)
substr(i,j) 截取字符串, i 为起始位置, j 为长度
slice(i,j) 同 substring
split() 分割字符串, 返回数组
length() 返回字符串的长度
toLowerCase 转化为小写
toUpperCase 转化为大写
trim 去除两端的空格
replace(i,j), 将字符串中的 i 串全部替换为 j
2.3 布尔值
一个布尔值只有 truefalse 两种值
要将一个值转换为其对应的 boolean 值, 可以使用转型函数 Boolean()
console.log(typeof Boolean("s")) //boolean
以下是其他类型转换成 Boolean 类型规则
数据类型 | 转换为 < span style="font-family: Times New Roman" ow="22" oh="15">true 的值 | 转换为 < span style="font-family: Times New Roman" ow="26" oh="15">false 的值 |
String | 任何非空字符串 | 空字符串 |
Number | 任何非零数字值 < span style="font-family: Times New Roman" ow="5" oh="15">( 包括无穷大 ) | 0 和 NaN |
Object | 任何对象 | null |
Undefined | undefined |
2.4null 和 undefined
Null 类型是一个只有一个值的数据类型, 即特殊的值 null 它表示一个空对象引用, 而 typeof 操作符检测 null 会返回 object
undefined 是派生自 null 的, 因此 ECMA-262 规定对它们的相等性测试返回 true
2.5 对象类型
1 数组
toString() 将数组转换为字符串
join() 数组通过指定的分隔符拼接为字符串
push() 在数组末尾添加一个元素, 返回修改后的长度
pop() 从末尾移除一个元素, 修改数组的长度, 返回被移除的元素
shift() 从头部移除一个元素, 返回被移除的元素
unshift() 在数组的前端添加一个元素
reverse() 逆向排序
sort() 从小到大排序, 如果没有使用参数, 按字符编码排序;
如果想按照其他标准进行排序, 就需要提供比较函数, 该函数要比较两个值, 然后返回一个用于说明这两个值的相对顺序的数字比较函数应该具有两个参数 a 和 b, 其返回值如下:
(1) 若 a 小于 b, 排序后的数组中 a 应该出现在 b 之前, 则返回一个小于 0 的值
(2) 若 a 等于 b, 则返回 0
(3) 若 a 大于 b, 则返回一个大于 0 的值
concat() 基于当前数组穿件新数组
var arr = [Lee, 21, 洛阳]; // 当前数组
- var arr2 = arr.concat(计算机编程); // 创建新数组, 并添加新元素
- alert(arr2); // 输出新数组
- alert(arr); // 当前数组没有任何变化
slice() 方法可以基于当前数组获取指定区域元素并创建一个新数组
splice() 方法主要用途是向数组的中部插入元素
arrayObject.splice(index,howmany,item1,.....,itemX)
参数 | 描述 |
index | 必需。整数,规定添加 < span style="font-family: Times New Roman" ow="4" oh="15">/ 删除项目的位置,使用负数可从数组结尾处规定位置。 |
howmany | 必需。要删除的项目数量。如果设置为 0 ,则不会删除项目。 |
item1, ..., itemX | 可选。向数组添加的新项目。 |
//splice 删除
var arr = [Lee, 21, 洛阳]; // 当前数组
- var arr2 = arr.splice(0, 2); //splice(0,2) 从第 0 个元素开始, 往后数两个元素 (Lee,21)
- alert(arr2); // 返回截取的元素
- alert(arr); // 当前数组被截取的元素被删除
- //splice 添加
var arr = [Lee, 21, 洛阳]; // 当前数组
- var arr2 = arr.splice(1, 0, 计算机编程, 江苏); // 没有截取, 但插入了两条
- alert(arr2); // 在第 2 个位置插入两条
- alert(arr); // 输出
- //splice 替换
var arr = [Lee, 21, 洛阳]; // 当前数组
- var arr2 = arr.splice(1, 1, 100); // 截取了第 2 条, 替换成 100
- alert(arr2); // 输出截取的 21
- alert(arr); // 输出数组
- 2Math
属 性 | 说 明 |
Math.E | 自然对数的底数,即常量 < span style="font-family: Times New Roman" ow="6" oh="15">e 的值 |
Math.LN10 | 10的自然对数 |
Math.LN2 | 2的自然对数 |
Math.LOG2E | 以 < span style="font-family: Times New Roman" ow="7" oh="15">2 为底 e 的对数 |
Math.LOG10E | 以 < span style="font-family: Times New Roman" ow="14" oh="15">10 为底 e 的对数 |
Math.PI | π的值 |
Math.SQRT1_2 | 1/2的平方根 |
Math.SQRT2 | 2的平方根 |
min() 和 max()
Math.ceil() 执行向上舍入, 即它总是将数值向上舍入为最接近的整数;
Math.floor() 执行向下舍入, 即它总是将数值向下舍入为最接近的整数;
Math.round() 执行标准舍入, 即它总是将数值四舍五入为最接近的整数;
Math.random() 方法返回介于 0 到 1 之间一个随机数, 不包括 0 和 1 如果想大于这个范围的话, 可以套用一下公式:
值 = Math.floor(Math.random() * 总数 + 第一个值)
方 法 | 说 明 |
Math.abs(num) | 返回 < span style="font-family: Times New Roman" ow="25" oh="15">num 的绝对值 |
Math.exp(num) | 返回 < span style="font-family: Times New Roman" ow="42" oh="15">Math.E 的 num 次幂 |
Math.log(num) | 返回 < span style="font-family: Times New Roman" ow="25" oh="15">num 的自然对数 |
Math.pow(num,power) | 返回 < span style="font-family: Times New Roman" ow="25" oh="15">num 的 power 次幂 |
Math.sqrt(num) | 返回 < span style="font-family: Times New Roman" ow="25" oh="15">num 的平方根 |
Math.acos(x) | 返回 < span style="font-family: Times New Roman" ow="7" oh="15">x 的反余弦值 |
Math.asin(x) | 返回 < span style="font-family: Times New Roman" ow="7" oh="15">x 的反正弦值 |
Math.atan(x) | 返回 < span style="font-family: Times New Roman" ow="7" oh="15">x 的反正切值 |
Math.atan2(y,x) | 返回 < span style="font-family: Times New Roman" ow="18" oh="15">y/x 的反正切值 |
Math.cos(x) | 返回 < span style="font-family: Times New Roman" ow="7" oh="15">x 的余弦值 |
Math.sin(x) | 返回 < span style="font-family: Times New Roman" ow="7" oh="15">x 的正弦值 |
Math.tan(x) | 返回 < span style="font-family: Times New Roman" ow="7" oh="15">x 的正切值 |
- 2.3Date()
- var now = new Date();
- // 创建一个指定日期和时间的 Date 对象
- // 就是 JavaScript 的月份范围用整数表示是 0~11, 这里传入 5 代表 6 月
- //var now = new Date(2015, 5, 19, 20, 15, 30, 123);
- now; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
- now.getFullYear(); // 2015, 年份
- now.getMonth(); // 5, 月份, 注意月份范围是 0~11,5 表示六月
- now.getDate(); // 24, 表示 24 号
- now.getDay(); // 3, 表示星期三
- now.getHours(); // 19, 24 小时制
- now.getMinutes(); // 49, 分钟
- now.getSeconds(); // 22, 秒
- now.getMilliseconds(); // 875, 毫秒数
- now.getTime(); // 1435146562875, 以 number 形式表示的时间戳
来源: http://www.bubuko.com/infodetail-2516313.html