• web-03-js


    1、js是什么(给页面添加动作)

        javascript是一个脚本语言,由浏览器执行,不进行预编译,由浏览器直接执行

        1)操作DOM元素(Document)及html元素

        2)操作BOM元素及操作浏览器窗口对象

    2、js特点

        1)解析执行:事先不编译,逐行执行

        2)基于对象:有大量的内置对象

        3)浏览器适合做哪些运算

            * 客户端的简单(逻辑)数据计算

            * 客户端表单的合法性验证

            * 浏览器的时间触发

            * 网页的特殊效果

            * 服务器的异步数据交互

    3、js规范

        1)严格区分大小写

        2)字母数字_$组成,数字不能开头

        3)驼峰命名

    4、基本用法(与css类似)

        1)行内(直接写在某行的内部)

            在html元素上添加事件属性,如:onclick=alert("点我干嘛?");

        2)嵌入式

            .1. 通常在script标签中写js代码

            .2. 调用

        3)文件调用方式

            .1. 写js文件

            .2. 在对应的html中引入js文件

    5、基本组成部分

        1)注释

        2)变量

            -1. js是弱类型语言,不同的变量类型会根据具体数值自动给定类型(赋值了的变量都有类型,通过typeof+变量名,查看变量类型)

    var a=1;
    等同于
    var a;
    a=1;

            -2. js中存在变量声明提升,在js中声明但是未初始化,该变量的值就是underfined

    var b;  //声明变量
    console.log(b);
    b=4; //初始化

            -3. 声明变量的方式

    var:存在变量的提升(变量可以重复定义)
    let:声明的变量不存在变量提升
    const:定义一个常量方式

        3)数据类型

            -1)特殊类型

    undefined
    如:声明但没有初始化的为 null

            -2)Number类型(在js中变量类型可以自动转换,不区分整数和小数)

    var age=34;
    数值运算:+-*/%
    如:1+"2"; //这里的加号具有拼接效果
    true+true; //结果为2,true自动转换为1;false转换为0

            -3)String(字符串类型)

    特殊字符需要转义
    单引号混用
    常用方法:
    str.indexOf(a); //返回字符串出现的位置
    str.replace(a,b); //将字符串中a变量替换成b变量

             -4)Boolean(布尔类型)

    *可以自动转换成数值参与运算,运算时将true=1,false=0
    *变量是不需要指定数据类型的,不同的数据类型之间就自动转换(只有在计算的时候)
    number+string=string
    number+boolean=number
    boolean+string=string
    boolean+boolean=number
    *类型转换函数
    toString() 将任何类型都可以转换成String,a.toString();
    parseInt(); //强转(截取),若不能转换会返回“NaN(Not a Number)”
    parseFloat(); //若不能转换会返回“NaN(Not a Number)”
    isNaN(); //判断内容是否为非数字

            -5)Array(数组类型)

            -6)对象

        4)运算符

    算术运算符:+-*/%;++;--
    赋值运算符,关系运算符:=;>;<;>=;<=;==(是否相等);!=;===
    ==:比较数值是否相等
    ===(全等):比较的是数值和类型都相等
    !=:不全等
    逻辑运算符:!;&;|;&&;||
    三目运算符:表达式?成立:不成立
    onblur:失去焦点
    document.getElementById(id值); //从页面中根据id的值查找指定的节点
    document.getElementById(id值).value=值; //给页面中根据id找到的节点进行赋值

        5)流程控制语句

            -1. if...else...

    if(表达式){执行语句1}else if(表达式){}..else{}

          js中的表达式可以为任意表达式,可以为任何数据类型

          转换规则如下:true/1/非空字符串--->都会转成true,其他所有的都转成false

             0/null/""/undefined/NaN--->false

            -2. switch...case

            -3. while(表达式){执行语句}   /    do{}while(表达式);

            -4. for

    for(var i=0;i<5;i++){}

    6、js中常用内置对象

        Number/String/RegExp/Array/Math/Data/Function

        1)Number

             * 创建

                var num=12;

             * 常用方法

                 toFixed(num)  --将数字转成字符串,并保留小数点后num位(够位数就四舍五入),若位数不够就用0补

        2)String

            * 创建

    var str="张三";
    var str1=new String("lisi");

             * 常用方法

    1. var len=str.length;  //返回长度
    2. toUpperCase/toLowerCase //转大写转小写
    3. charAt(index) //返回index位置的字符
    console.log(str.charAt(0)); //结果为“张”
    4. indexOf(findStr,[index])
    .findStr:需要查找的字符串
    .index:(可选)从index位置开始找,返回findStr第一次出现的位置,若没有,则返回-1
    如:var index=str3.indexOf("a"); //从str3的0位置开始查找,找a字符在str3中第一次出现的位置
    5. lastIndexOf(findStr); //查找findStr最后一次出现的位置
    6. replace(findStr,toStr)
    .findStr:需要查找的字符串,可以直接写字符串或跟正则表达式 /正则/
    .toStr:将findStr替换成toStr(需要替换的字符串,返回替换后的字符串)
    如:将str3中“a”全部替换成“g”
    错误:console.log(str3.replace("a","g")); //不能全部替换
    方案一:
    var str3="sasdfsasdfasafsdf";
    for(var i=0;i<str3.length;i++){
    var find=str3.charAt(i);
    if(find=="a"){
    //保存a前面的内容
    var prev=str3.substring(0.i);
    //将当前的字符替换
    find="g";
    var after=str3.substring(i+1);
    str3=prev+find+after;
    }
    }
    方案二:正则表达式 RegExp
    console.log(str3.replace(/a/g,"g"));

        3)RegExp (正则表达式)

            -1)正则表达式创建

    var rg=/正则表达式/[范围];
    var reg=new RegExp("正则表达式",[范围]);

            -2)正则表达式写法

    ab:匹配ab(找ab)
    [0-9]:表示数字
    [a-zA-Z]:英文字母
    {5}:表示出现的次数
    {1,5}:1-5次
    /^a/:表示以字母a开头
    /a$/:以字母a结尾
    /^a$/:只能是字母a

      注意:范围:

              g  --->global  全局

              i   ---->ignore 忽略大小写

        正则对象.test(str);   //判断一个字符串是否匹配该正则

      如:

    var str4="asdabcsdfsfasdfa";
    var reg=/^abc/; //用于规定必须是以abc开头,才为true
    var result=reg.test(str4); //结局为false
    var reg=/abc{2,}/; //规定以a开头以b结尾且c必须出现2次
    var reg=/^abc$/; //必须是abc,完全匹配
    如:将字符串中的狗字替换成“*”
    var str5="一只小狗在快乐的奔跑着";
    console.log(str5.replace(/狗)/g,"*");

       提示:String字符串对正则的支持

    replace(reg.toStr);  //将符合正则的部分替换成toStr
    match(regExp); //字符串的方法,用于返回字符串匹配正则的数组。找字符串中国有没有匹配正则的内容
    search(regExp); //返回匹配的第一次出现的位置
    如:
    var str="aaasdf456sd1321";
    console.log(str.match(/[0-9]/g)); //返回结果["4","5","6","1","3","2","1"]
    console.log(str.search(/[0-9]/g)); //返回结构为6(表示数字第一次出现的位置)

        4)Math

          常用方法:

    Math.sin() Math.cos() Math.tan()
    Math.florr() -向下取整
    Math.cail() -向上取整
    Math.random() -随机生成0-1的小数

    如:

    console.log(Math.random()*1000+999);//[999-1999)
    console.log(Math.floor(2.9)); //结果为2
    console.log(Math.ceil(2.1)); //结果为3
    例:随机生成1-10的整数
    var num=Math.floor(Math.random()*10+1);

        5)Array

            -1)创建方法:

    数组中的类型可以是任意的
    var arr1=[1,"a",true,{"name":"张三"}]
    数组的长度是可变的
    var arr2=new Array();
    arr2[0]="张三"; //arr2.length.返回结果为1

               注:二维数组

    var arr3=[["南京","苏州","扬州"],["青岛","日照"]];
    console.log(arr3[0][1]); //找到扬州

           -2)数组常用方法

    reverse():反转,将数组内容反转过来
    sort([function]):数组排序
    -默认使用数组自己定义的排序规则
    -function:自定义排序规则(可选参数)
    如:var arr4=[30,255,7,50];
    arr4.sort(); //按数字的首数字进行排序,将原数组排序

           -3)数组和字符串之间的转换

    console.log(arr4.toString());  //数组转字符串
    //字符串转数组
    var str="1,45";
    var arr=str.split(",");
    console.log(arr);
    for(var i=0;i<arr.length;i++){
    var new_arr=arr[i].split("=");
    arr[i]=new_arr;
    }

        6)Date

          创建方式(跟参数与不跟参数)

    var date=new Date();
    var date=new Date("2017/6/22 15:32");

         日期常用方法:

    toLoaleString()  --本机当前时间
    getTime() --获取毫秒数(11115154841561秒)
    getDate() --获取几号 如:23号
    getDay() --获取星期的周几
    getFullYear() --2018

        7)function

            常用写法:

    function f(){}
    var f=function(){}
    var f=new Function(){};

       注意:js中没有方法重载的概念,调用时能找到方法名,则执行方法,如:

    function f(a){
    alert(111);
    }
    f();f(1); //这两种调用执行结果都一样

    var f=new Function("a","b","return a+b");
    f(2,3);

        8)其他

    * arguments对象 --存在函数的代码中,用于表示函数的参数数组,如:

    function cal(){
    if(arguments.length==1){
    return arguments[0]*arguments[0];
    }else if(arguments.length==2){
    return arguments[0]+arguments[0];
    }
    }//单数乘积,双数求和

    * 箭头函数

    let f2=(a,b=2)=>{return a+b;}
    f2(3); //结果为5

    * 变量作用域

        1、用var声明的变量是有作用域的

           定义在函数内部->称为私有变量->整个函数体

           定义在函数外部->整个js->并且存在变量提升的(声明)

        2、let/const   //不存在提升问题

    如:

    hi="哈喽"; //作用域最大(作用范围广),属于全局变量
    //在外部方法中使用内部方法的私有变量
    function outer(){
    var x=1;
    function inner(){
    var y=2;
    return y;
    }
    }

    * 全局函数:所有js对象都可以使用

    parseInt();
    parseFloat();
    isNaN()
    eval() //执行表达式的字符串(用于计算)
    -接收合法的表达式和语句
    -只接收原始的字符串
    如:
    var str="12+34";
    eval(str); //46
    console.log("console.log(str)"); //输出  console.log(str)
    eval("console.log(str)"); //输出46  
  • 相关阅读:
    VSCode拓展插件推荐(HTML、Node、Vue、React开发均适用)
    算法_栈的Java的通用数组实现
    算法_计算输入的算术表达式的值.
    设计模式整理_组合模式
    JavaSE复习_9 集合框架复习
    一个小题目的三种不同的解法
    设计模式整理_状态模式
    设计模式整理_迭代器模式
    设计模式整理_模板模式
    JavaSE复习_8 泛型程序设计
  • 原文地址:https://www.cnblogs.com/xslzwm/p/9602948.html
Copyright © 2020-2023  润新知