JS基础知识

数据类型

检测数据类型 --- typeof 数据

数据类型:number(数字/NaN) 、 string(字符) 、 bollean(布尔) 、 object(对象 / null) 、 underfined(没定义) 、 function

数据类型分2大类:基本(不可分) -- number / string / boolean / underfined 、复合(可分) -- object  / function

-------

类型转换

parseInt(数据) --> 整数

-转换失败 返回 NaN

-NaN的数据类型是number

NaN加上任何数都等于NaN

NaN不等于任何数,包括他自己

NaN == 非法数字

isNaN(数据) --> 判断数据是不是非法数字 返 true / false

a.显示转换

-parseInt

1.干掉小数,字符 --> 整数

2.从左到右找能转的转

3.忽略字符的前导0,后导0

4.做进制转换 --> 10

-parseFloat

1.转小数

2.同上

-Number

1.转数

2.严格型转换(先看一下有不能转的就返回NaN)

b.隐式转换(Number)

-  *  /  ==

' ' + 数字 -->  '110'  数字到字符

注意: === 不隐转

-------

取反    !数据(数字、字符、布尔) -- 把状态颠倒

-------

字符的方法

strObj.charAt(下标)          给:下标      返:字符/null

strObj.indexOf(字符)        给:字符      返:下标/-1(-->)

strObj.lastIndexOf(字符)  给:字符      返:下标/-1(<--)

strObj.substring(开始位置,结束位置)    不包含结束位置,只有开始位置就默认从开始位置-结尾

strObj.split(规则) 切割      给:规则      返:数组(找不到规则返回数组长度1就本身)

规则--在字符里找

strObj.toLowerCase()        小写

strObj.toUpperCase()        大写

*** 字符一旦创建无法修改,除非销毁

例子:判断浏览器、判断文件后缀

a.判断浏览器

Chrome(谷歌) /  Firefox(火狐) / rv:11 or MSIE7-10(IE)

if(window.navigator.userAgent.indexOf('Chrome')!=-1){alert("谷歌")}

b.判断文件后缀名

var file = "xxx.png";

document.write(file.substring(file.lastIndexOf(".")+1,file.length));

-------

数组

var arr = [] / new Array()

arr.length=0;  //清空数组 独有

数组内最好放相同数据

数组方法

修改原数组:arrObj.push(数据)  返回-数组长度

arrObj.pop()    返回-删除的数据/underfind

arrObj.unshift(数据)    返回-数组长度

arrObj.shift()    返回-删除的数据/underfind

arrObj.splice(其实位置,要删除的个数,要插入的元素)

arrObj.join(规则) --- 规则自个发明

arrObj.reverse()  反转数组

arrObj.sort(n1,n2){return n1-n2}  排序

不会修改原数组:arr1.concat(arr2) 连接数组  返回-新数组

-------

JSON

理解:给变量打了个包,属性和值配对儿,键值对儿

*** 属性都是字符

json没有length

循环json  用 for in(枚举)

数据解析  string: "{}"  "[]"

a. substring --> split --> for in

b. eval("("+str+")")

c. JSON.parse(str)    json-->string

d. JSON.stringify(json)  string-->json

-------

Function

参数:个数 没有限制

参数和变量一样没有数据类型

函数定义在哪里不重要 重要的是在哪里执行!

***变量的值以调用为准

返回值:函数可以返回一个东西(没有类型)!

-function 函数名 (参数列表){return 值;}

-注意:函数没有执行一次都会复制一份!

-特性:a.返回值没有明确类型

b.return 后面的代码不执行

c.return;  返回一个underfined

d.没有return 默认会返回一个 underfined

e.只有函数才有返回值

封闭空间闭包 自执行函数

-( function( index ){ js代码 } )( i );

-原理:函数每执行一次都会复制一份,包括里面参数!

-好处:省了一个函数名、防止重名、解决i的问题(事件里面的i 定时器的i)

-------

underfined:

1.定义了没有赋值 var a;

2.真的没有定义 typeof a;

3.访问一个不存在的属性  aBtn[i].index;

4.没有明确的返回值;

5.使用一个underfined;

-------

日期对象

var d = new Date();    创建日期对象,取的是系统时间

d.getFullYear();  number 年

d.getMonth();  月  月从0开始算

d.getMonth()+1;  为了显示正确

d.getDate();  日

d.getHours();  小时 24小时制

d.getMinutes();  分钟

d.getSeconds();    秒

d.getMilliseconds();  毫秒

d.getDaty()  星期  星期天==0

d.setFullYear(年,月,日)

d.setHours(小时,分,秒,毫秒)

d.getTime()  返回 时间戳(number)

***设置日期是,时间会顺忒

获取本月有多少天:月+1,日设0,取日

d.setMonth(d.getMonth()+1)

d.setDate(0)

-------

定时器

setInterval(函数,多少时间走一次)  -- 永远执行

setTimeout(函数,多少时间后执行)  --只执行一次

开定时器  var timer = setInterval(fn,time) / var timer = setTimeout(fn,time)

关定时器  clearInterval(timer) / clearTimeout(timer)

***定时器在开之前,先关一下

-------

Math

Math.random()  0-1 包括0 但不包括1

Math.ceil(数据)向上,大,右

Math.floor(数据)  向下,小,左

Math.round(数据)  4小舍5大入

Math.abs(数据) 绝对值

Math.sqrt(数据) 开平方--负数不能开平方返NaN

Math.pow(基数,幂)  基数的幂次方

Math.max/min(数据)  最大、最小

-------

select

***option的value不可以省

oSel.value  返回的是选中的option的value值

oSel.selectedIndex  返回选中的option的索引

oSel.options[oSel.selectedIndex].text  返回是选中的option的内容

onchange事件  当选择发生改变--伴随获取、失去焦点

new Option(text,value)  创建option对象

oSel.options.add(oPt)  options才有添加的方法

oSel.options.remove(索引)  删除

你可能感兴趣的:(JS基础知识)