js入门知识点

作者: web前端ling | 来源:发表于2017-06-14 17:38 被阅读0次

    * 基础知识

    * 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

    相关文章

      网友评论

        本文标题:js入门知识点

        本文链接:https://www.haomeiwen.com/subject/odheqxtx.html