zoukankan      html  css  js  c++  java
  • JS

    JavaScript基础:

    JavaScript是运行在浏览器端的脚本语言,JavaScript主要解决的是前端与用户交互的问题
    
    是一种动态性、弱类型的语言;
    
    他的解释器就在我们的浏览器中,是浏览器的一部分
    
    这门语言对大小写敏感,并会忽略多余的空格,可以使用进行代码换行,注释使用//或/**/
    
    • 主要由三部分组成:
    ECMAScript:语言的语法和基本对象
    
    文档对象模型Dom(Document Object Model):处理网页内容的方法和接口
    
    浏览器对象模型Bom(BrowserObjectModel):与浏览器进行交互的方法和接口
    
    • 前端三大部:
    HTML:页面的内容、结构
    
    CSS:页面的表现形式、部分动画
    
    JavaScript:页面的行为、交互、功能
    

    JavaScript引入

      1. 行间事件:为某一个具体的元素标签赋予js内容
    <input type="button" value="按钮" onclick="alert('点我');">
    
      1. 嵌入引入:在文档页面通过Script标签嵌入
    <head>
        <title></title> 
        <script type="text/javascript"> 
            alert("ok!"); 
        </script> 
    </head>
    
      1. 外部引入:定义单独js文件,通过script标签进行引入
    <script type="text/javascript" src="js/main.js"></script>
    

    alert函数用来展示一个提示框

    变量定义

    var x = 1 
    var y = "2" 
    var z = 2
    
    • 定义变量需要使用关键字:var
      同时定义多个变量可以使用 , 隔开

    注意:javascript变量均为对象,每当声明一个变量,就相当于创建了一个对象

    • 命名规则:
    1. 区分大小写
    2. 首字符为字母、数字、下划线_、或美元符号$ 
    3. 其他字符可以为字母、数字、下划线、美元符号
    
    • 调试程序的方法:
    alert:弹框
    console.log():浏览器控制台
    document.title():页面标题
    

    基本数据类型

    • Number:数字类型,可以带小数点,也可以不带
    var a = 1; 
    var b = 1.5;
    
    • String:字符串类型,可以使用单引号或双引号
    var a = "abc"; 
    var b = "aaaa" + 1
    
    • Boolean:布尔类型,只能是true|false
    var a = true;
    
    • undefined:未定义类型
    var a;
    
    • null:空对象类型
    var a = null;
    
    • 查看变量数据类型:
    var x = "abc"; 
    alert(typeof x)
    
    • 匈牙利命名规则:
    对象 o (Object):oPerson
    数组 a (Array):aUsers
    字符串 s (String):sAccount
    整数 i (Integer):iScore
    布尔值 b (Boolean):bIsLogin
    浮点数 f (Float):fPrice
    函数 f (Function):fEats
    正则 re (RegExp):reIDCard
    

    类型转换

    • 转换为字符串:toString,支持BooleanNumberString三种主要类型
    var x = 1; 
    var y = "abc"; 
    var z = true; 
    alert(x.toString()) // "1" 
    alert(y.toString()) // "abc" 
    alert(z.toString()) // "true"
    
    • 转换为数字:parseInt、parseFloat,将只含有数字的字符串变为整形或浮点型,其他类型返回NaN()
    var x = "123" 
    var y = "123.01" 
    var z = "123aa" 
    alert(parseInt(x)) //123 
    alert(parseFloat(x)) //123 
    alert(parseInt(y)) //123 
    alert(parseFloat(y)) //123.01 
    alert(parseInt(z)) //123 
    alert(parseFloat(z)) //123
    

    注意:parseFloat转换的包含浮点数的字符串应该是十进制
    八进制或十六进制,该方法会忽略前导0,八进制数字020会被解析为20,十六进制数字0xFF,会返回
    Nan,因为x符号不是有效字符。

    强制类型转换

    • Boolean():当要转换的值是至少有一个字符的字符串;

    非 0 数字或对象时,Boolean() 函数将返回 true。
    如果该值是空字符串、数字 0、undefined 或 null,它将返回 false。

    alert(Boolean(0)) // false 
    alert(Boolean(1)) // true 
    alert(Boolean("1")) // true 
    alert(Boolean("1a")) // true
    
    • Number():换与 parseInt() 和 parseFloat() 方法的处理方式相似,只是它转换的是整个值,而不是部分值。
    alert(Number(false)) // 0 
    alert(Number(true)) // 1 
    alert(Number(undefined)) // NaN 
    alert(Number(null)) // 0 
    alert(Number("1.2")) // 1.2 
    alert(Number("12")) // 12 
    alert(Number("1.2.3")) // NaN 
    alert(Number(new object())) // NaN 
    alert(Number(50)) // 50
    
    • String():可把任何值转换成字符串

    注意:强制转换成字符串和调用 toString() 方法的唯一不同之处在于,对 null 和 undefined 值强制
    类型转换可以生成字符串而不引发错误

    复合类型

    • Array:数组,索引从0开始,
    var people = ['张三','李四','王五']; 
    var people = new Array('张三','李四','王五'); 
    var people = new Array(); 
    people[0] = "张三" 
    people[1] = "李四" 
    people[2] = "王五"
    
    • Object:对象,就像是字典,定义时key值不需要设置类型
    var person = { 
        name: "张三", 
        age: 18, 
        sex: "male", 
    };
    /*对象有两种访问方式:*/ 
    person["name"] 
    person.name
    
    var person = new Object(); 
    person.name = "张三"; 
    person.age = 17;
    

    函数

    • 函数语法:包裹在花括号中的代码块,前面使用了关键词 function
    <button onclick="func()">点击这里</button>
    
    function func(arg1,arg2,...) { 
        alert("函数被执行") 
        // 执行代码 
        return 1; // return是可选的,并且可以不写返回值,单纯只做函数终止 
    }
    // 函数名 func 
    // 参数 arg1,arg2,... 
    // 返回值 return 1 
    func() // 函数执行
    
    • 变量作用域:
      局部变量
    在 JavaScript 函数内部声明的变量(使用 var)是局部变量,
    只能在函数内部访问它
    该变量的作用域是局部的
    生命周期:局部变量会在函数运行以后被删除 (生命期从它们被声明的时间开始)
    

    全局变量

    在函数外声明的变量是全局变量
    网页上的所有脚本和函数都能访问它
    生命周期:全局变量会在页面关闭后被删除 (生命期从它们被声明的时间开始)
    局部变量如果希望变为全局变量
    可以使用windows.var = 的形式赋予给当前窗口
    { var x = 1;
    window.x = x; };
    
    function func(x,y){ 
        return x + y 
    }
    var res = func(1,2) 
    alert(res)
    
    • JavaScript函数解析过程:
    1. 预编译:function函数提前,并将var定义的变量声明提前,先暂时赋值为undefined
    2. 执行
    func() // 弹出提示 
    alert(iNum) // undefined 
    alert(abc) // 出错 
    function func() { 
        alert("这个是函数") }
    var iNum = 1
    

    匿名函数

    • 函数可以没有名字,比如直接为某些事件赋值 :
    window.onload = function(){ 
        var sDate = new Date() 
        console.log(sDate) 
    }
    

    封闭函数

    • 封闭函数常用来创建一个开始就执行而不用命名的函数
    (function(){ 
        alert("你好"); 
    })();
    
    • 也可以在函数定义前加上"~"和"!"等符号来定义匿名函数
    !function(){ 
        alert("你好"); 
    }();
    
    • 封闭函数可以创建一个独立的空间,在封闭函数内定义的变量不会影响外部同名的函数和变量,可以避免命名冲突
    var x = 1; 
    !function(){ 
        var x = "这是同名变量"; 
        alert(x); 
    }
    alert(x);
    

    当页面上引入多个js文件时,用这种办法比较安全。

    运算

    算术运算符:如y=5

    运算符 描述 示例 结果
    + x=y+2 x=7
    - x=y-2 x=3
    * x=y*2 x=10
    / x=y/2 x=2.5
    % 取余 x=y%2 x=1
    ++ 累加 x=++y x=6
    -- 递减 x=--y x=4

    赋值运算符:如x=10,y=5

    运算符 例子 等价于 结果
    = x=y x=5
    += +x=y x=x+y x=15
    -= x-=y x=x-y x=5
    *= x*=y x=x*y x=50
    /= x/=y x=x/y x=2
    %= x%=y x%y x=0

    注意:数字与字符串相加,结果将成为字符串

    比较运算符:如x=5

    运算符 描述 示例
    == 等于 x==8 为 false
    === 全等(值和类型) x=5 为 true;x="5" 为 false
    != 不等于 x!=8 为 true
    > 大于 x>8 为 false
    < 小于 x<8 为 true
    >= 大于或等于 x>=8 为 false
    <= 小于或等于 x<=8 为 true
    • 比较运算符常在条件语句中进行使用:
    var name = "张三"; 
    if (name=="张三") { 
        document.write("这个人是张三") 
    }
    

    逻辑运算符

    运算符 描述 示例
    && and (x < 10 && y > 1) 为 true
    ! not !(x==y) 为 true

    条件运算符

    var NumCheck = 0; 
    
    var Dis = (NumCheck==0) ? "是数字0":"不是数字0";
    
    • 如果变量NumCheck是0,则Dis的值为:"是数字0";反之为:"不是数字0"

    条件语句

    • 条件语句:
    var iNum = 0; 
    if (iNum==0){ 
        ...;     
    }else if (iNum==1) { 
        条件细分...; 
    }else{
        不满足以上条件均到这里; 
    }
    
    • switch语句:
    var day = new Date().getDay(); 
    // 星期日:0 范围:0~6 
    switch(day){ 
        case 0: 
            alert("今天是星期二"); 
            break; 
        case 1: 
            ... 
            break; 
        ... 
    }
    
    • 工作原理:首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做
      比较。如果存在匹配,则与该 case 关联的代码块会被执行。请使用 break 来阻止代码自动地向下一
      个 case 运行

    for循环语句

    • 语法:
    for(var i = 0; i < len; i++){ 
        ... 
    }
    
    // for(起点数据; 判断条件; 数据递增或递减){}
    
    var i = 0; 
    for( ;i < 10; i++){ 
        ... 
    }
    
    // 如果循环起始值已经被设置,可以在开头省略
    
    for(var i = 0; ; i++){ 
        ... 
        if (i==5){ 
            ... 
            break; //终止循环 
        }     
    }
    // 当没有第二个语句时,必须在循环内提供break,否则循环则无法停下来,可能令浏览器崩溃
    
    for(var i = 0; i < 10; ){ 
        console.log(i); 
        i += 2; 
    }
    
    // 如果没有提供第三个语句,可以在for循环中进行编写数值的变化
    
    • for/in语句循环遍历对象的属性
    for (x in object){ 
        console.log(x); 
    }
    // 字符串:x 取下标 
    // 数组:x 取下标 
    // 对象:x 取key
    
    var x = "abcdef" // 0,1,2,3,4,5 
    var y = [1,2,3,4,"5"] // 0,1,2,3,4 
    var z = { // name,age,gender 
        name:"张三", 
        age:16, 
        gender:"male", 
    }
    for (obj in z){ 
        console.log(obj); 
    }        
    
    

    while循环语句

    • 语法:
    while (条件){ 
        执行代码; 
    }
    
    var x = "abcdef"; 
    var i = 0; 
    while (x[i]){ 
        console.log(x[i]); 
        i++; 
    }
    // 下表超出范围时不会报错,返回undefined
    
    • do/while循环:
    do/while 循环是 while 循环的变体
    该循环首先会执行一次循环代码块,然后检查循环条件是否为真
    然后如果条件为真的话,就会重复这个循环
    
    do{ 
        循环执行代码 
    }while (条件);
    
    var i = 3; 
    do{ 
        console.log(i) 
        i--; 
    }while (i > 5); 
    // do/while循环至少会执行一次
    

    获取页面元素

    • 通过页面元素ID值进行获取:document.getElementById('')
      获取到的是一个HTML对象,可以赋值给一个变量
    注意:获取对应元素时,首先要确定页面已经生成所需元素,
    通常我们将javascript代码写到页面最下面;
    或通过使用windows.onload()事件判断是否已经生成页面。
    
    <body>
        <p id="p">这是一段待获取的文字</p> 
        <script> 
            function func(){ 
                var sP = document.getElementById('p'); 
                console.log(sP); 
            }
            func() 
        </script> 
    </body> 
    <!-- 获取到的内容: <p id="p">这是一段待获取的文字</p> -->
    
    
    <body>
        <p id="p">这是一段待获取的文字</p> 
        <script> 
            window.onload = function(){ 
                var sP = document.getElementById('p'); 
                console.log(sP); 
            } 
        </script> 
    </body> 
    <!-- 获取到的内容: <p id="p">这是一段待获取的文字</p> -->
    

    操作页面元素

    • 可以通过id方式获取到对应页面内的元素,就可以对元素的属性进行操作,包括对属性的读和写

    • 读取元素属性:元素.属性

    <p id="aaa" style="color: red;">这是一段待获取的文字</p> 
    <script> 
        var oP = document.getElementById('aaa'); 
        console.log(oP) 
        console.log(oP.id); 
        console.log(oP.style); 
        console.log(oP.style.color); 
    </script>
    
    • 修改元素属性:元素.属性 = xxx
    <p id="aaa" style="color: red;">这是一段待获取的文字</p> 
    <button onclick="blue_font()">按钮</button> 
    
    <script> 
        function blue_font(){ 
            var oP = document.getElementById('aaa'); 
            oP.style.color = "blue"; 
            // 修改字体样式属性中的字体颜色为蓝色 
        } 
    </script>
    
    <p id="aaa" style="color: red;">这是一段待获取的文字</p> 
    <button id="color_button">按钮</button> 
    
    <script> 
        color_button.onclick = function(){ 
            var oP = document.getElementById('aaa'); 
            oP.style.color = "blue"; 
            // 修改字体样式属性中的字体颜色为蓝色 
        } 
    </script>
    

    也可以获取到对应按钮元素后在绑定函数到它:

    <p id="aaa" style="color: red;">这是一段待获取的文字</p> 
    <button id="Button">按钮</button> 
    
    <script> 
        var oButton = document.getElementById('Button'); 
        oButton.onclick = function(){ 
            var oP = document.getElementById('aaa'); 
            oP.style.color = "blue"; 
            // 修改字体样式属性中的字体颜色为蓝色 
        } 
    </script>
    
    • 读取或写入标签包裹的内容(读取或修改标签文本内容):innerHTML
    <a id="a" href="https://www.baidu.com">百度</a> 
    <button onclick="urlChange()">变搜狗</button> 
    
    <script> 
        function urlChange(){ 
            var oA = document.getElementById('a'); 
            oA.href = "https://www.sougou.com"; 
            console.log(oA.innerHTML); // 获取标签文本内容 
            oA.innerHTML = "搜狗"; //修改标签文本内容 
        } 
    </script>
    

    JS事件及属性

    • 常见事件:
    - 用户点击鼠标 
    - 网页已加载 
    - 图像已加载 
    - 鼠标移动某个元素上 
    - 输入字段被改变时 
    - 提交表单时 
    - 用户触发某些按键时
    

    +onclick事件:用户点击鼠标

    <p onclick="TextChange(this)">这是文本</p> 
    <!-- this 代表当前所处的元素 --> 
    <script> 
        function TextChange(id){ 
            id.innerHTML = "文本修改"//可以直接通过传来的参数进行页面元素的读取及修改 
        } 
    </script>
    
    <p id="p">这是文本</p> 
    <script> 
        var oP = document.getElementById("p"); 
        oP.onclick = function(){ 
            oP.innerHTML = "文本修改"//可以直接通过传来的参数进行页面元素的读取及修改 
        } 
    </script>
    

    +onmouseover事件:鼠标移入
    +onmouseout事件:鼠标移出

    <p id="aaa">请把鼠标移动过来</p> 
    <script> 
        var oP = document.getElementById("aaa"); 
        oP.onmouseover = function(){ 
            oP.style.color = "green";//可以直接通过传来的参数进行页面元素的读取及修改 
        }
        oP.onmouseout = function(){ 
            oP.style.color = "red"; 
        } 
    </script>
    

    JS高级

    字符串及操作方法

    1. 字符串合并+
    2. 数字字符串变整数parseInt()
    3. 数字字符串变浮点数parseFloat()
    4. 字符串按分隔符切分split("*")

    var x = "a*b*c*d" 
    alert(x.split("*")) // a,b,c,d 
    console.log(x.split("*")) // ["a", "b", "c", "d"]
    

    5. 查找字符串是否含有某字符,找到返回索引,找不到返回-1String.indexOf()

    var x = "abcdefag" 
    var res = x.indexOf("z") 
    alert(res)
    

    6. 截取字符串:String.substring(start, end),不包含end索引位置数据

    var x = "abcdefag" 
    alert(x.substring(2)) // cdefag 
    alert(x.substring(2,4)) // cd 
    alert(x.substring()) // abcdefag
    

    7. 字符串反转:通过结合数组的**reverse()**函数

    var x = "abcd"; 
    console.log(x.split("").reverse().join("")) //dcba
    

    数组及操作方法

      1. 定义数组的方法:
    var aList = new Array(1,2,3); 
    var aList = new Array(); 
    aList[0] = "a"; 
    aList[1] = "b"; 
    var aList = [1,2,3,4,"a"];
    
      1. 获取数组的长度:Array.length()
    var aList = new Array(1,2,3); 
    console.log(aList.length) // 3
    
      1. 将数组成员通过指定拼接符合并成一个字符串:Array.join("*")
    var aList = [1,2,3,4,5] 
    console.log(aList.join("*")) // 1*2*3*4*5
    
      1. 向数组的最后增加或删除成员:Array.pop()、Array.push()
    var aList = [1,2,3,4,5] 
    var opa = aList.pop() // opa: 5 c
    onsole.log(opa) // 5 
    console.log(aList) // [1, 2, 3, 4] 
    aList.push("a") 
    console.log(aList) // [1, 2, 3, 4, "a"]
    
      1. 将数组反转:Array.reverse()
    var aList = [1,2,3,4,5]; 
    aList.reverse(); 
    console.log(aList); //[5, 4, 3, 2, 1]
    
      1. 返回数组中元素第一次出现的索引值:Array.indexOf(chr)
    var aList = [1,2,3,4,5]; 
    console.log(aList.indexOf(3)) // 2
    

    +7. 在数组中增加或删除成员,并返回被删除的:Array.splice(index, howmany, items...)

    从index位置开始,给定的hwomany个数的值,并用后面的items替换这些被删除的值

    var aList = [1,2,"a",4,5] 
    aList.splice(2,1,"b","c") 
    console.log(aList) // [1, 2, "b", "c", 4, 5]
    

    多维数组

    数组的成员包含数组

    var aList = [1,2,3,["a","b"]] 
    console.log(aList[-1][0]) // 出错 undefined 
    console.log(aList[3][0]) // a
    

    定时器

    • 作用

    定时调用函数
    制作动画

    反复执行定时器

    • setInterval(code, millisec):反复执行的定时器
      code: 必须参数,要调用的函数或要执行的代码串
      millisec: 必须参数,执行code任务所需要的事件间隔,以毫秒计

    • clearInterval(setInterval_obj):关闭反复执行的定时器

    <!--跑马灯效果--> 
    <h3 id="h3">abcdefg</h3> 
    <button id="start_button">开始</button> 
    <button id="stop_button">停止</button>
     <script>
         start_button.onclick = function(){ // 开启定时事件 
            var sT = setInterval(loop,1000); 
            window.sT = sT; // 声明此sT定时事件为全局变量 
        }
        stop_button.onclick = function(){ // 关闭定时事件 
            clearInterval(sT) 
        }
        function loop(){ 
            var Opstr = document.getElementById('h3'); 
            Opstr.innerHTML = Opstr.innerHTML.substring(1) + Opstr.innerHTML[0] 
            console.log(Opstr.innerHTML) 
        } 
    </script>
    

    等待执行定时器

    • setTimeout(code, millisec):定义只执行一次的等待定时器

    code: 必须参数,要调用的函数或要执行的代码串
    millisec: 必须参数,执行code任务所需要的事件间隔,以毫秒计

    <h3 id="h3">我是一个内容</h3> 
    <button id="start_button">让上面的内容消失</button> 
    <script type="text/javascript"> 
        start_button.onclick = function(){ 
            var st = setTimeout(clear,1000) 
            window.st = st; 
        }
        function clear(){ 
            var oH3 = document.getElementById('h3'); 
            oH3.innerHTML = ""; 
        } 
    </script>
    
  • 相关阅读:
    CodeForce VKcup A
    CNN卷积神经网络
    神经网络
    我的机器学习之路
    [OPENCV] 第一个程序 识别颜色
    Android 登录界面与首页的设计
    go web的基本原理
    Go语言标准库之http/template
    吞吐量(TPS)、QPS、并发数、响应时间(RT)概念
    数据库恢复技术
  • 原文地址:https://www.cnblogs.com/xinzaiyuan/p/12401848.html
Copyright © 2011-2022 走看看