js入门知识点

* 基础知识

* js的输出方式

* js的组成

* js的命名规范

* 数据类型

* number数据类型

* 布尔数据类型 boolean

* 数据类型之间的比较规则

* 检测数据类型

* 判断

* arguments

* 对象

* for循环

* 数组的方法

* 实例创建数组

* 字符串的方法

* DOM获取元素

* 动态创建元素

* 元素节点

* 自定义属性的操作

* Math函数

基础知识

ctrl +f 搜索

js的输出方式

js的输出方式:

1:alert('珠峰培训'); 弹出框  弹出一个层

alert(confirm('')) --弹出框  加一个确定或者取消 加上alert有返回值  true false

2:

1)console.log('fandonglai') ;控制台输出  主要用于调试js代码

2)console.error('报错');  报错

3)console.warn('警告') ;  警告

4)console.info ('信息');!

5)console.dir('');输出对象详细的信息

6)console.table('');以表格的形式输出 两层以上的嵌套的时候才会输出

7)console.clear('') ;清空控制台

js的组成

js的组成:

1)ECMAScript(5)  js的帮助文档api 核心 规定了js的引入方式、命名规范、变量、数据类型、语法、操作语句

2)DOM  document object model  文档对象模型

3)BOM  browser object model   浏览器对象模型

js的命名规范

js的命名规范

1)区分大小写

document  documenT

2)遵循驼峰命名法

第一个单词首字母小写,从第二个单词开始首字母大写

personInfo

studentManageSystem

3)匈牙利命名法

oDiv  aStu

4)由数字、字母、下划线、$组成,不能以数字作为开头

div1  box1  stu  $stu

5) 不能使用关键字和保留字

关键字:在js中有特殊意义的

var

保留字:未来可能作为关键字的

数据类型

数据类型

1)基本数据类型

number(数字)、string(字符串)、boolean(布尔)、null(空)、undefined(未定义)

2)引用数据类型

1.object(对象数据类型 ):object 对象 Array数组 RegExp正则

2.function(函数数据类型)

基本数据类型和引用数据类型区别:

1)基本数据类型:值

2)引用数据类型:空间地址

number数据类型

number数字数据类型

包括:正数、负数、小数、0、NaN

1 -1 1.2 -1.2 0 NaN

NaN:not a number   不是一个数

NaN==NaN  //false

isNaN(NaN)  //true

1.isNaN(检测的内容)   作用 :`判断`一个内容是不是有效数字,如果不是有效数字返回true,

如果是一个有效数字返回false

2.Number(要转换的内容)  强制转换,必须全部都为数字才可以转换,否则返回NaN

Number(null)  0

Number('')    0

Number(false) 0

Number(true)  1

3.parseInt()   非强制转换 从左到右依次查找,是数字继续查找,只要遇到一个字符不是有效数字,就停止查找,直接返回之前找到的数字

4.parseFloat()   非强制转换 和parseInt一样,但是可以多识别一个点.

``转换不成功 返回NaN``

布尔数据类型 boolean

布尔 boolean

包括:只有两个值 true false

方法:

1.! 一个叹号,取反:先转为布尔类型(Boolean())然后再取反

将任意的值转为布尔类型,只有0、NaN、''、null、undefined这五个值为false 其余都为true

2.!!  取反再取反,相当于直接转为布尔类型Boolean()

3.Boolean()  等价于!!

以上三个方法的返回值(结果)为true或者false

数据类型之间的比较规则

数据类型之间的比较规则

=  赋值

== 比较

相同的数据类型直接比较

1.对象==对象  false

不同数据类型之间的比较:

2.对象==字符串  对象先转为字符串(.toString()) 然后再比较

3.对象==数字  对象先转为字符串(.toString())再转为数字(Number())

4.对象==布尔  对象先转为字符串再转为数字,布尔直接转为数字

5.布尔==字符串 布尔转数字 字符串转数字

6.布尔==数字   布尔转数字

7.数字==字符串  字符串转数字

8.null==undefined  true

9.null或者undefined和其它任何类型比较都返回false

![]==false 先取反再比较

检测数据类型

1、typeof null   "object"

typeof的返回值:字符串类型  "number"、"string"、"boolean"、"undefined"、"object"、"function"

2、instanceof 当前這个对象,是否属于某个类

问题;当前這个类,只要在這个对象原型链上,永远都是true

var ary = [1,2,3]

ary instanceof Array   //true

3、constructor;作用;打印出当前在這个对象所属的类

问题;当我们给类.prototype自己复制的时候,constructor会出问题;

ary.constructor   返回的是函数  函数的名字就是他的类型

4、Object.prototype.toString.call()

基类上的tostring;作用可以打印出当前实例this,所属累的详细信息;

所以我们想要检测谁,就让this通过call变成谁

判断

判断

1、if、else if、else

2、三元运算符 三目运算符:主要应用于简单的if else的判断

3、switch case:不同值情况的判断

1:     if(条件1){

条件1成立(为真)执行的代码

}else if(条件2){

条件2成立(为真)执行的代码

}else if(条件3){

条件3成立(为真)执行的代码

}...

else{

以上条件都不成立执行的代码

}

只有0 NaN '' null undefined 5个值为false 其余都为true

if条件中可以有以下符号:

&&  并且 两边的小条件都为真,整体即为真

||  或者 只要有一个真 整体即为真 第一个为假操作第二个

> >= < <= == ===

只有一个值:直接判断真假

+ - *(乘)  /(除)

!  !!

2:三元运算符

应用于if else判断 或者只有一个if

格式:

条件?条件成立执行的代码:条件不成立执行的代码

3:switch case:不同值情况的判断 每一个case是三个

switch (变量){

case 值1:

变量与值1比较 成立执行的代码

break;

case 值2:

变量与值2比较 成立执行的代码

break;

....

default:

以上条件都不成立执行的代码

}

var  a = 3

switch (a){

case 1:

alert(1);

break;

case 2:

alert(2);

break;

case 3:

alert(3);

break;

default:

alert(5);

}

arguments

函数中,存储参数的一个集合

函数天生自带的一个属性:内置属性 arguments

1:非严格模式:  arguments 和形参存在映射关系:一个改了另外一个也跟着改

'use strict'严格模式下: arguments和形参之间没有映射关系;

2:严格模式下不可以使用arguments.callee  arguments.callee.caller

arguments.callee:当前函数本身,這里代表的是当前的函数

arguments.callee.caller :当前方法是在哪一个函数中执行的,我们可以通过這个方法获取到,如果是在window下执行的,caller值是null

----------

对象

对象

对象数据类型创建的三步:

1)开辟一个空间地址 堆内存

2)把对象中的属性名和属性值 存储到空间中

3)空间地址赋值给对象名

指向同一个空间地址时:对象1==对象2  true

1.增加一组属性

obj.name = 'zfpx'

2.获取属性名对应的属性值  'zfpx'

obj.name

3.修改属性名对应的属性值  'zf'

obj.name = 'zf'

4.删除属性

1.假删除  obj.name = null

2.直接删除 delete obj.name

obj.name

obj['name']

如果属性名为数字 只能用obj[1]

for循环

for循环

每一轮循环都要执行四步:

1)初始值

2)判断是否满足循环执行的条件

3)执行循环体中的内容

4)累加

(1) for in对象中的属性名和属性值

var obj = {

name:'zf',

age:8,

add:'北京',

1:2016,

6:6666

}

for(var a in obj){

console.log(obj[a])    obj[]的形式

}

顺序:先输出属性名为数字的(从小到大),再按照书写顺序输出

var ary = [100,200,300,400];

for(var key in ary){

console.log(key); 数组的索引 都是从0开始一串数字 索引的作用:用来表示每一项的位置

}

(2)while

var i=0;   while(i<5){      console.log(i);   i++;    }

19、在循环体中有两个关键字:break continue

break 跳出整个循环,整个循环结束

continue 本轮循环 循环体后面的代码不再执行,会继续执行累加,继续下一轮循环

20、 i++ 在i原有的基础上加1

i+=1  i=i+1

i+=5  在i原有的基础上加5

i++ 先运算乘除加法  在累加

++i 先自己加1在去运算

var a=0;

console.log(a+++1);1 a++先运算  不累加 得到的结果是1 (a+1)=1

console.log(a);1     运算完以后,在进行累加;這时候a=0;累加1=1

var b=0;

var b=a+++1;

b=a+1;

a++;

数组的方法

数组

1)方法的作用

2)方法的参数

3)方法的返回值

4)原数组是否改变

24;数组方法

1)增加、删除、替换  `原数组改变`

1.push(要增加的内容) 末尾增加一项

返回:新增后数组的长度

原数组:改变

2.pop()  删除最后一项

返回值:被删除的那一项

原数组:改变

3.unshift(要增加的内容)  在数组开头增加一项

返回值:增加后数组的长度

原数组:改变

4.shift() 删除第一项

返回值:被删除的内容

原数组:改变

5.splice()  删除 替换 增加

splice(n,m)  从索引n开始 删除m个

splice(n)    从索引n开始 删除到最后

splice()    返回[] 原数组不变

splice(n,m,x)  替换 从索引n开始删除m个 用x替换被删除的内容

splice(n,0,x)  增加 在索引n的前面增加一项

splice(0)  克隆

1.删除数组最后一项

1.pop()

2.ary.length--;

3.ary.length-=1;

4.ary.length = ary.length-1;

5.ary.splice(ary.length-1,1)

数组中最后一项的索引:ary.length-1

2;在数组末尾增加一项

push

ary[ary.lenght]=100;

splice(ary.lenght,0,要增加的内容)

3.克隆

splice(0) slice(0)/slice() ary.concat()

4.获取数组中[第n项,第m项],原数组不变

第n项的索引:n-1

第m项的索引:m-1

slice(n-1,m)

26;数组截取和拼接  原数组不变

1.slice(n,m)  从索引n开始截取到索引为m处,不包括m  包前不包后

返回:提取的内容

原数组:不变

slice(n)  从索引n开始 截取到最后

slice(0)  克隆

slice()   克隆

2.concat()  拼接数组

返回:拼接后的新数组

原数组:不变

ary.concat(ary2)  新数组的顺序:书写的顺序

克隆:  ary.concat()、 splice(0)、slice(0)、 slice()

27;数组转为字符串的方法 原数组不变

1;.toString() 转为字符串

返回一个新字符串【】-->‘’

原数组;不变

2;join('分隔符') 根据分隔符将数组的每一项链接,—— + 把,改成分隔符了

返回;新字符串

原数组;没改变

eval 将字符串转为js代码执行

eval('3+4+5')

返回的是12

28数组的排序跟倒序

排序和倒序 原数组改变

1;sort(排序) 只能进行9以内的排序

返回的是一个排好序的新数组

原数组改变

ary.sort(function(a,b)){

return a-b;从小到大排序

}

ary.sort(function(a,b)){

return b-a;从大到小排序

}

2;倒序

reverse()

将数组反转

返回值;新数组

原数组;改变

29;原数组不变

常用但不兼容,ie6-ie8

1)indexOf(内容) 根据内容找到在数组中第一次出现的索引 索引的位置

找不到的话,返回-1

返回值;索引(的位置)

应用:判断数组中是否存在這个内容

2)lastIndexOf(内容)根据内容找到在数组中最后第一次出现的索引 索引的位置 找不到的话,返回-1

返回值;索引(的位置)

3)map()遍历数组中的每一项

有返回值

ary.map(function(a,b,c)){

a;每一项的内容

b;每一项的索引

c;原数组

}循环数组中的每一项

4)forEach()

没有返回值

区别:map有返回值  forEach没有返回值

实例创建数组

实例创建数组

var ary=new Array(12);12是设定数组的长度

var ary=new Array('12','12')  [12,12]

var ary=new Array(12,23) 这样数组有两项,分别是12 和13

字符串的方法

字符串

1.通过下标找字符

2.通过字符找下标

charAt(索引) 通过下标找对应字符

charCodeAt(索引) 通过下标找对应字符的 Unicode 编码

indexOf():从前往后找; 找到的时候,返回对应的索引,找不到,返 回-1;

lastIndexOf():从后往前找; 找到的时候,返回对应的索引,找不到, 返回-1;

3.字符串的截取

substr(n,m) 从索引n开始,截取m个;

substring(n,m) 从索引年开始,截取到索引m,包前不包后;

slice(n,m) slice功能跟substring一样,但是slice支持负值;

4.字符串的转大小写 toLowerCase()

字符串转小写 toUpperCase() 字符串转大写

5.可以跟正则配合的字符串方法:

1)split('分隔符') 根据 分隔符 将字符串转数组

2)replace(旧,新) 字符串替换

3)match() 捕获:找到要找的字符,返回数组[内容,索引,原字符串], 找不到返回null

4)search() 查找字符:找到的时候,返回对应内容的索引,找不到返 回-1;

DOM获取元素

1;如果id值重复了,只能获取第一个

可以直接通过id的名字进行操作,不推荐使用

在ie6还有ie7中,不区分id值的大小写

document.getElementById('box');

2;通过标签名获取---一组元

类数组 ;索引 lenght

document.getElementsByTagName('li')

li.length 想要操作第一个li1  li1[0]

3;通过类名获取---一组元素

var li1 =document.getElementsByClassName('li1')

想要操作第一个li1  li1[0] 类数组中索引为0的一项

不能对类数组进行操作,而是直接对這个类数组种的某一个元素进行操作

4;通过name获取的方法 一般用于表单元素(表单元素)ie下只对表单元素起作用

var input=document.getElementsByName('sex');

也有对应的索引还有长度 lenght

5;获取body

document.body

获取html

document.documentElement

6;获取可视窗口的宽度

document.documentElement.clientWidth||document.body.clientWidth;

获取可是窗口的告诉

document.documentElement.clientHeight||document.body.clientHeight;

7;不兼容  主要在移动端使用 他和css选择器是一样的

获取一个元素 支持所有的选择器

document.querySelector('#box')

获取的是一组元素

document.querySelectorAll('li')

动态创建元素

动态创建元素

1.document.createElement('标签名')

克隆

元素.cloneNode(true)

2.父容器.appendChild(oDiv)   在末尾的位置

把创建的标签,放在页面中

父容器.insertBefore(新,老)  添加到老元素之前

3.父容器.removeChild(删除的元素)  删除

父容器.replaceChild(新,旧)  用新的替换旧的

元素节点

//节点;nodes               nodeType(节点的类型)       nodeName           nodeValue

//元素节点(标签)               1            大写的标签名           null

//文本节点(文字 空格 回车)     3              #text             文本的内容

//注释节点(注释—)             8              #comment           注释的内容

//document                    9               #document           null

childNodes  获取所有的子节点

children   获取所有的子元素节点  【不兼容ie8】(不写注释的情况下,可以直接用)

parentNode  父节点

previousSibling  获取上一个哥哥节点

xtSibling  下一个弟弟节点

firstChild  第一个子节点

lastChild  最后一个子节点

childNodes 获取所有的子节点

document.body.childNodes//获取body下面所有的子节点

2;children 获取所有的子元素节点  不兼容

document.body.children//  获取的是所有子元素的借点

3;parentNode   父节点

document.body.parentNode

自定义属性的操作

1

: 自定义属性的操作

属性操作有三种方法;

1‘’.‘’

2;

[]

3;attribute系列

attribute系列;

获取;obj.getAttribute(attr)-拿到元素身上自带的属性

设置;setAttribute(attr,value)

删除:removeAttribute(attr)

点和attribute的区别

1)直接给标签上添加自定义属性,通过.获取不到,但是通过getAttribute可以获取到

2)设置时;通过.设置的自定义属性,可以设置成功,但是在标签上看不到,

而通过setAttribute设置的属性,通过getAttribute获取

注意;用.来设置,就用.来获取

2

:设置自定义属性

1. obj.属性名 = 属性值

2. 设置:元素.setAttribute('属性名','属性值')

获取:元素.getAttribute('属性名')

移除:元素.removeAttribute('属性名')

Math函数

Math函数

Math不是类,他仅仅是一个对象,'Math' in window ==>true

他是window全局对象的一个属性而已,這个对象包含了很多的方法,供我们操作数字,所以我们把它称之为’数学函数‘

Math.floor(12.5)  //向下取整  12.5

Math.ceil(12.5)  //向上取整   13

Math.min(1,2,3);  //取最小值

Math.max(1,2,3);  //取最大值

Math.round(12.5);   //四舍五入

Math.random()  //取[0,1)之间的随机数

Math.round(Math.random()*(m-n)+n);

Math.abs() //绝对值

Math.PI() //3.1415926圆周率

Math.sqrt(9)  //开平方

Math.pow()//  幂次方 x的y次方 (2,3)2的3次方

Math.trunc();   把小数点后面的数字切掉返回整数部分

Math.sign()   判断这个数是不是正数 或者 负数 或者0 正数返回1 负数返回-1  0 返回0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容