js总结

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类型规则  

数据类型

转换为true的值

转换为false的值

String

任何非空字符串

空字符串

Number

任何非零数字值(包括无穷大)

0NaN

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

必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。

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);									//输出数组

 2、Math

属  性

说  明

Math.E

自然对数的底数,即常量e的值

Math.LN10

10的自然对数

Math.LN2

2的自然对数

Math.LOG2E

2为底e的对数

Math.LOG10E

10为底e的对数

Math.PI

π的值

Math.SQRT1_2

1/2的平方根

Math.SQRT2

2的平方根

min()和max()

Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数;

Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数;

Math.round()执行标准舍入,即它总是将数值四舍五入为最接近的整数;

Math.random()方法返回介于01之间一个随机数,不包括01。如果想大于这个范围的话,可以套用一下公式:

  值 = Math.floor(Math.random() * 总数 + 第一个值)

 

方  法

说  明

Math.abs(num)

返回num的绝对值

Math.exp(num)

返回Math.Enum次幂

Math.log(num)

返回num的自然对数

Math.pow(num,power)

返回numpower次幂

Math.sqrt(num)

返回num的平方根

Math.acos(x)

返回x的反余弦值

Math.asin(x)

返回x的反正弦值

Math.atan(x)

返回x的反正切值

Math.atan2(y,x)

返回y/x的反正切值

Math.cos(x)

返回x的余弦值

Math.sin(x)

返回x的正弦值

Math.tan(x)

返回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形式表示的时间戳

 

posted @ 2018-03-05 16:01  zengjinping  阅读(109)  评论(0编辑  收藏  举报