zoukankan      html  css  js  c++  java
  • 26、js阶段性复习

    1、一元运算符

    Operator + 可用于将变量转换为数字:

     1 <!DOCTYPE html>
     2 <html>
     3 <body>
     4 
     5 <p> typeof 操作符返回变量或表达式的类型。</p>
     6 
     7 <button onclick="myFunction()">点我</button>
     8 
     9 <p id="demo1"></p>
    10 <p id="demo2"></p>
    11 
    12 <script>
    13 function myFunction() {
    14     var y = "John";
    15     var x = + y;
    16     document.getElementById("demo1").innerHTML = typeof x + "<br>" + x;
    17     y="20";
    18     x= +y;
    19     document.getElementById("demo2").innerHTML = typeof x + "<br>" + x;
    20    
    21 }
    22 </script>
    23 
    24 </body>
    25 </html>

      

    2、类型转换

     1 <!DOCTYPE html>
     2 <html>
     3 <body>
     4 
     5 <p> String() 方法可以将数字、布尔、日期转换为字符串。</p>
     6 
     7 <p id="demo1"></p>
     8 <p> Number() 方法可以将字符串、布尔、日期转换为数字。</p>
     9 <p id="demo2"></p>
    10 
    11 <script>
    12 var x = 123;
    13 document.getElementById("demo1").innerHTML =
    14     "String(123) is"+
    15     String(x) + "<br>" +
    16     String(123) + "<br>" +
    17     String(100 + 23)+"<br>"+
    18     "x.toString() is "+x.toString()+(123).toString()+(100 + 23).toString()+"<br>"+
    19     "String(false) is "+String(false)+"<br>"+
    20     "falst.toString() is "+false.toString()+"<br>"+
    21     "String(Date()) is "+String(Date())+"<br>"+
    22     "Date().toString() is "+Date().toString();
    23     
    24     var result = x+= +"30";
    25 document.getElementById("demo2").innerHTML =
    26     "Number(3.14) is "+Number(3.14) + "<br>" +
    27     "Number('') is "+Number("") + "<br>" +
    28     "Number(' ') is "+Number(" ") + "<br>" +
    29     "Number('99 88') is "+Number("99 88") + "<br>" +
    30     "parseFloat('99.88') is "+parseFloat("99.88") + "<br>"+
    31     "parseInt('99') is "+parseInt("99") + "<br>"  +
    32     "123+= +'30' is "+ result + "<br>" +
    33     "Number(false) is " +Number(false) +"<br>"+
    34     "Number(new Date()) is "+Number(new Date());
    35 </script>
    36 </body>
    37 </html>

    3、js错误(try catch throw

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>菜鸟教程(runoob.com)</title>
    <script>
    function myFunction()
    {
        try
        { 
            var x=document.getElementById("demo").value;
            if(x=="")    throw "值为空";
            if(isNaN(x)) throw "不是数字";
            if(x>10)     throw "太大";
            if(x<5)      throw "太小";
        }
        catch(err)
        {
            var y=document.getElementById("mess");
            y.innerHTML="错误:" + err + "";
        }
    }
    </script>
    </head>
    <body>
    
    <h1>我的第一个 JavaScript</h1>
    <p>请输出一个 5 到 10 之间的数字:</p>
    <input id="demo" type="text">
    <button type="button" onclick="myFunction()">测试输入</button>
    <p id="mess"></p>
    
    </body>
    </html>

    4、变量提升

    JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。

    JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明。

    注意:JavaScript 只有声明的变量会提升,初始化的不会。

    5、严格模式

    它不是一条语句,但是是一个字面量表达式,在 JavaScript 旧版本中会被忽略。

    "use strict" 的目的是指定代码在严格条件下执行。

    严格模式下你不能使用未声明的变量。

      消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
    • 消除代码运行的一些不安全之处,保证代码运行的安全;
    • 提高编译器效率,增加运行速度;
    • 为未来新版本的Javascript做好铺垫。

    "严格模式"体现了Javascript更合理、更安全、更严谨的发展方向,包括IE 10在内的主流浏览器,都已经支持它,许多大项目已经开始全面拥抱它。

    另一方面,同样的代码,在"严格模式"中,可能会有不一样的运行结果;一些在"正常模式"下可以运行的语句,在"严格模式"下将不能运行。掌握这些内容,有助于更细致深入地理解Javascript,让你变成一个更好的程序员

    6、js操作json

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title></title>
     6 </head>
     7 <body>
     8 
     9 <script>
    10 
    11     var text = '{"employees":['+
    12                     '{"firstName":"John","lastName":"Doe"},'+
    13                     '{"firstName":"Anna","lastName":"Smith"}]}';
    14 
    15     var obj = JSON.parse(text);
    16     console.log(obj.employees[0].firstName);;
    17 
    18     console.log(JSON.stringify(obj));
    19 </script>
    20 </body>
    21 </html>

    7、function自调用

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    
    <p id="demo1"></p>
    <p id="demo2"></p>
    <p id="demo3"></p>
    
    <script>
        (function(){
            document.getElementById('demo1').innerHTML = "Hello,我是自调用的!";
        })();
    
        var x = function (a,b,c) {
            document.getElementById('demo2').innerHTML = "again!";
        }();
    
        var y = function (a,b,c) {
            console.log(arguments+" a is "+a+" b is "+b);
            document.getElementById('demo3').innerHTML = "again!";
        };
        y(12,11,33,22,11);
        y();
    </script>
    </body>
    </html>

    8、函数是个对象

    <!DOCTYPE html>
    <html>
    <body>
    
    <p> arguments.length 属性返回函数接收到参数的个数:</p>
    <p id="demo1"></p>
    
    <p>将函数作为了一个字符串返回</p>
    <p id="demo2"></p>
    
    <p>typeof myfunction is </p>
    <p id="demo3"></p>
    
    <script>
        function myFunction(a, b) {
            return arguments.length;
        }
        document.getElementById("demo1").innerHTML = myFunction(4, 3);
        document.getElementById("demo2").innerHTML = myFunction.toString();
        document.getElementById("demo3").innerHTML = typeof(myFunction);
    </script>
    
    </body>
    </html>

    9、js调用函数的4种方式

    <!DOCTYPE html>
    <html>
    <body>
    <p>js函数调用的4种方式,每种方式的不同在于this的初始化</p>
    
    <p>方式1 全局</p>
    
    <p id="demo1"></p>
    
    <p id="demo2"></p>
    
    <p>方式2 对象中的方法</p>
    
    <p id="demo3"></p>
    
    <p>方式3:使用构造函数调用函数</p>
    
    <p id="demo4"></p>
    
    <p>方式4:通过call或者apply来调用函数,两个方法的第一个参数必须是对象本身!</p>
    
    <p id="demo5"></p>
    
    <p id="demo6"></p>
    
    <script>
    
        /*方式1
         以上函数不属于任何对象,但是在js中它始终是默认的全局对象。在HTML中默认的全局对象是HTML页面本身,
         所以函数是属于HTML页面。在浏览器中的页面对象是浏览器窗口(window对象),
         以上函数会自动变为window对象的函数 */
        function myFunction1(a, b) {
            return a * b;
        }
        document.getElementById('demo1').innerHTML = myFunction1(20, 3);
        document.getElementById('demo2').innerHTML = window.myFunction1(20, 3);
    
    
        /*方式2 对象中的方法
         * */
        var myObject = {
            firstName: "John",
            lastName: 'Doe',
            fullName: function () {
                return this.firstName + this.lastName;
            }
        }
        document.getElementById('demo3').innerHTML = myObject.fullName();
    
        /*方式3:构造函数的方式*/
        function myFunction(arg1, arg2) {
            this.firstName = arg1;
            this.lastName = arg2;
        }
        var x = new myFunction("John", "Doe");
        document.getElementById('demo4').innerHTML = x.firstName;
    
        /*方式4:作为函数方法调用函数*/
        add = function (a, b) {
            return a + b;
        }
    
        document.getElementById("demo5").innerHTML = add.call(undefined,20, 30);
        myArray = [20, 30];
        document.getElementById("demo6").innerHTML = add.apply(undefined, myArray);
    
    
    </script>
    
    </body>
    </html>

    10、闭包

    什么是闭包?

    各种专业文献上的"闭包"(closure)定义非常抽象,很难看懂。我的理解是,闭包就是能够读取其他函数内部变量的函数。

    由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。

    所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

    闭包的用途?

    闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中

     function f1(){
        var n=999;
        nAdd=function(){n+=1}
        function f2(){
          alert(n);
        }
        return f2;
      }
      var result=f1();
      result(); // 999
      nAdd();
      result(); // 1000

    11、DOM事件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>DOM事件总结</title>
    </head>
    
    <!--onload和onunload事件 会在用户进入或者离开时调用-->
    <body onload="checkCookies()">
    
    <h1 onclick="this.innerHTML='Oops!'">点击文本</h1>
    
    <h2 onclick="changeText(this)">Try It!</h2>
    <button id="btn">点击</button>
    <p id="demo1"></p>
    
    <h1 id='demo2' onmouseover="mouseOver()" onmouseout="mouseOut()"> hello world </h1>
    
    <!--下边这样写:按下显示鼠标按下,抬起时会调用抬起和click事件-->
    <h1 id='demo3' onmousedown="mouseDown()" onmouseup="mouseUp()" onclick="displayDate()"> 鼠标点击测试 </h1>
    
    <input type="text" id="fname" onchange="upperCase()"/>
    
    <!--addEventListener-->
    <p>element.addEventListener(event,function,useCapture)</p>
    <!--第一参数为事件的类型 第二参数为事件触发后调用的函数 第三函数描述事件是冒泡还是捕获(注意,不要使用on前缀,例如使用click,而不是onclick)-->
    <p>注意:同一个元素可以添加多个同类型的事件,而且都生效</p>
    <button id="demo4">点我会触发两个回调函数</button>
    
    <p>事件传递两种方式:冒泡和捕获 </p>
    <p>冒泡:内部元素的事件会先被触发,然后再触发外部元素</p>
    <p>捕获:外部元素的事件会先被触发,然后再触发内部元素</p>
    
    <div id="demo5">
        <button id="demo6">我是冒泡</button>
    </div>
    <br/>
    <div id="demo7">
        <button id="demo8">我是捕获</button>
    </div>
    
    <script>
    
        document.getElementById('demo5').addEventListener('click', function () {
            alert('div clicked');
        },false);
        document.getElementById('demo6').addEventListener('click', function () {
            alert('p clicked');
        },false);
        document.getElementById('demo7').addEventListener('click', function () {
            alert('div clicked');
        },true);
        document.getElementById('demo8').addEventListener('click', function () {
            alert('p clicked');
        },true);
    
    
        document.getElementById('demo4').addEventListener('click', function () {
            alert('fuck 1th!');
        })
    
        document.getElementById('demo4').addEventListener('click', function () {
            alert('fuck 2th!');
        })
        function mouseDown() {
            var x = document.getElementById('demo3');
            x.innerHTML = "鼠标按下!";
        }
    
        function mouseUp() {
            var x = document.getElementById('demo3');
            x.innerHTML = "鼠标抬起!";
        }
    
        function mouseOver() {
            var x = document.getElementById('demo2');
            x.innerHTML = "鼠标进来了!";
        }
    
        function mouseOut() {
            var x = document.getElementById('demo2');
            x.innerHTML = "鼠标出去了!";
        }
    
        function upperCase() {
            var x = document.getElementById('fname');
            x.value = x.value.toUpperCase();
        }
        function checkCookies() {
            if (navigator.cookieEnabled) {
                alert("cookies 可用");
            } else {
                alert("cookies 不可用");
            }
    
        }
        function changeText(a) {
            a.innerHTML = "You did it!"
        }
        function displayDate() {
            document.getElementById('demo1').innerHTML = Date();
        }
    
        //   document.getElementById('btn').onclick = displayDate();// 该写法不对,会直接执行displayDate方法,
        document.getElementById('btn').onclick = function () {
            displayDate()
        };
    </script>
    
    </body>
    </html>

  • 相关阅读:
    2019-7-29-WPF-元素裁剪-Clip-属性
    2018-2-13-C#-枚举转字符串
    2018-2-13-C#-枚举转字符串
    2018-2-13-WPF-DelegateCommand-出现Specified-cast-is-not-valid
    什么是可串行化MVCC
    年轻就该多尝试,教你20小时Get一项新技能
    初识一周Linux(Ubuntu)我学会了什么
    Red Hat Linux的ftp安装和配置方法
    copy_{to, from}_user()的思考
    自定义注解!绝对是程序员装逼的利器!!
  • 原文地址:https://www.cnblogs.com/kunyashaw/p/5623724.html
Copyright © 2011-2022 走看看