美文网首页
JS入门学习

JS入门学习

作者: jacob_ | 来源:发表于2019-07-06 17:33 被阅读0次

    1 引言

    为什么要学习JavaScript?
    • HTML 定义了网页的内容
    • CSS 描述了网页的布局
    • JavaScript 网页的行为

    2 JS的使用

    2.1 如何编写

    • HTML 中的脚本必须位于 <script> 与 </script> 标签之间。
    • 脚本可被放置在 HTML 页面的 <body> 和 <head> 部分中。
    <!DOCTYPE html>
    <html>
    <body>
    .
    .
    <script>
    document.write("<h1>这是一个标题</h1>");
    document.write("<p>这是一个段落</p>");
    </script>
    .
    .
    </body>
    </html>
    

    2.2 输出方式

    • 使用 window.alert() 弹出警告框。
    • 使用 document.write() 方法将内容写到 HTML 文档中。
    • 使用 innerHTML 写入到 HTML 元素。
    • 使用 console.log() 写入到浏览器的控制台。
    <script> 
    window.alert(5 + 6); 
    </script> 
    
    <!DOCTYPE html> 
    <html> 
    <body> 
    
    <h1>我的第一个 Web 页面</h1> 
    
    <p id="demo">我的第一个段落</p> 
    
    <script> 
    document.getElementById("demo").innerHTML = "段落已修改。"; 
    </script> 
    
    </body> 
    </html>
    
    <script> 
    document.write(Date()); 
    </script> 
    

    该方法会直接添加一行

    <script> 
    a = 5; 
    b = 6; 
    c = a + b; 
    console.log(c); 
    </script> 
    

    输出到控制台

    2.3变量

    • 变量的定义
    var pi=3.14; 
    var person="John Doe"; 
    var answer='Yes I am!'; 
    

    这里不需要对各种变量定义时进行区分。
    注意未赋值的的变量值是undefined并不是Null

    • 数组的定义
     var cars=new Array();
     cars[0]="Saab";
     cars[1]="Volvo";
     cars[2]="BMW";
    
     var cars=new Array("Saab","Volvo","BMW");
    
    var cars=["Saab","Volvo","BMW"];
    
    • 对象的定义
      对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔:
     var person={firstname:"John", lastname:"Doe", id:5566};
    

    对象属性的调用:

    name=person.lastname;
    name=person["lastname"];
    

    2.4函数的使用

    语法如下:

     function myFunction(var1,var2)
    {
    代码
     }
    
    <!DOCTYPE html>
    <html>
    <head>
    <script>
    function myFunction()
    {
    alert("Hello World!");
    }
    </script>
    </head>
    
    <body>
    <button onclick="myFunction()">Try it</button>
    </body>
    </html>
    

    2.5 事件

    以下是 HTML 事件的实例:

    • HTML 页面完成加载
    • HTML input 字段改变时
    • HTML 按钮被点击
    <button onclick='getElementById("demo").innerHTML=Date()'>The time is?</button>
    
    //与前一行代码区别在于使用this调用的是该button
    <button onclick="this.innerHTML=Date()">The time is?</button>
    
    <html>
    <head> 
    <meta charset="utf-8"> 
    <title>W3Cschool教程(w3cschool.cn)</title> 
    </head>
    <body>
    
    <p>点击按钮执行 <em>displayDate()</em> 函数.</p>
    <button onclick="displayDate()">点我</button>
    
    <script>
    function displayDate()
    {
        document.getElementById("demo").innerHTML=Date();
    }
    </script>
    <p id="demo"></p>
    
    </body>
    </html>
    

    一些常见的事件如下:

    1. onchange HTML 元素改变
    2. onclick 用户点击 HTML 元素
    3. onmouseover 用户在一个HTML元素上移动鼠标
    4. onmouseout 用户从一个HTML元素上移开鼠标
    5. onkeydown 用户按下键盘按键
    6. onload 浏览器已完成页面的加载

    2.6 字符串

    • 可使用单引号或者双引号
    var answer = "It's alright";
    var answer = "He is called 'Johnny'";
    var answer = 'He is called "Johnny"';
    //使用转义字符
    var answer = ''He is called\"Johnny\" '';
    
    • 索引
    var character = carname[7];
    
    • 长度
    var sln = txt.length;
    

    2.7 类型转换

    • typeof 操作符
      返回变量的类型
    typeof "John"                 // 返回 string 
    typeof 3.14                   // 返回 number
    typeof NaN                    // 返回 number 
    typeof false                  // 返回 boolean
    typeof [ 1,2,3,4]              // 返回 object
    typeof {name: 'John', age:34}  // 返回 object
    typeof new Date()             // 返回 object
    typeof function () {}         // 返回 function
    typeof myCar                  // 返回 undefined (if myCar is not declared) 
    typeof null                   // 返回 object
    
    • constructor 属性
      返回所有 JavaScript 变量的构造函数。
    "John".constructor                 // 返回函数 String()  { [native code] }
    (3.14).constructor                 // 返回函数 Number()  { [native code] } 
    false.constructor                  // 返回函数 Boolean() { [native code] }
    [1,2, 3,4].constructor              // 返回函数 Array()   { [native code] }
    {name:'John', age:34}.constructor  // 返回函数 Object()  { [native code] }
    new Date().constructor             // 返回函数 Date()    { [native code] }
    function() {}.constructor         // 返回函数 Function(){ [native code] }
    

    使用该属性同样可以判断变量的类型

    function isArray(myArray) { 
        return myArray.constructor.toString().indexOf("Array") > -1; 
    }
    
    • 将数字转换为字符串
    String(x)         // 将变量 x 转换为字符串并返回
    String(123)       // 将数字 123 转换为字符串并返回
    String( 100+ 23)  // 将数字表达式转换为字符串并返回
    x.toString() 
    (123).toString() 
    (100 + 23).toString()
    

    2.8 正则表达式的一些方法的使用

    • search
    //用于检索字符串中指定的子字符串,
    //或检索与正则表达式相匹配的子字符串,并返回子字符串的起始位置。
    var str = "Visit w3cschool"; 
    var n = str.search(/w3cschool/i);
    var n = str.search("w3cschool");
    //output = 6
    
    • replace
    //用于在字符串中用一些字符替换另一
    //些字符,或替换一个与正则表达式匹配的子字符串。
    var str = "Visit Microsoft!"; 
    var res = str.replace(/microsoft/i, "w3cschool");
    var res = str.replace("Microsoft", "w3cschool");
    // output = "Visit w3cschool!"
    
    • test()
    //用于检测一个字符串是否匹配某个模式,如果字符串
    //中含有匹配的文本,则返回 true,否则返回 false。
    //以下实例用于搜索字符串中的字符 "e":
    <script>
    var patt1=new RegExp("e");
    document.write(patt1.test("The best things in life are free"));
    </script>
    //output = true
    
    • compile()
    //方法用于改变 RegExp。
    var patt1=new RegExp("e"); 
    document.write(patt1.test("The best things in life are free")); 
    patt1.compile("d"); 
    document.write(patt1.test("The best things in life are free"));
    //output = truefalse
    

    2.9 异常处理

    • try catch语法
     try
       {
       //在这里运行代码
       }
     catch(err)
       {
       //在这里处理错误
       }
    

    例子

    <!DOCTYPE html>
    <html>
    <head>
    <script>
    var txt="";
    function message()
    {
    try
      {
      adddlert("Welcome guest!");
      }
    catch(err)
      {
      txt="本页有一个错误。\n\n";
      txt+="错误描述:" + err.message + "\n\n";
      txt+="点击确定继续。\n\n";
      alert(txt);
      }
    }
    </script>
    </head>
    
    <body>
    <input type="button" value="查看消息" onclick="message()">
    </body>
    
    </html>
    
    • Throw 语句
      例子
    <script>
    function myFunction()
    {
    try
      { 
      var x=document.getElementById("demo").value;
    //抛给catch
      if(x=="")    throw "empty";
      if(isNaN(x)) throw "not a number";
      if(x>10)     throw "too high";
      if(x<5)      throw "too low";
      }
    catch(err)
      {
      var y=document.getElementById("mess");
      y.innerHTML="Error: " + err + ".";
      }
    }
    </script>
    
    <h1>My First JavaScript</h1>
    <p>Please input a number between 5 and 10:</p>
    <input id="demo" type="text">
    <button type="button" onclick="myFunction()">Test Input</button>
    <p id="mess"></p>
    

    3 函数

    • 将函数存储到变量中,变量即可当做函数使用
    <script>
    var x = function (a, b) {return a * b};
    document.getElementById("demo").innerHTML = x;
    </script>
    //output = function (a, b) {return a * b}
    
    //匿名函数
    var x = function (a, b) {return a * b}; 
    var z = x(4, 3);
    
    • 自调用函数
    <script>
    (function () {
        document.getElementById("demo").innerHTML = "Hello! 我是自己调用的";
    })();
    </script>
    
    • 函数是对象
      在 JavaScript 中使用 typeof 操作符判断函数类型将返回 "function" 。
    <script>
    function myFunction(a, b) {
        return arguments.length;
    }
    document.getElementById("demo").innerHTML = myFunction(4, 3);
    </script>
    //output = 2
    
    • 函数显式参数与隐藏参数(arguments)
    //parameter1,parameter2, parameter3为显式参数
    functionName(parameter1, parameter2, parameter3) {
        code to be executed
    }
    
    //1, 123, 500, 115, 44, 88作为隐式参数传递
    //JavaScript 函数有个内置的对象 arguments 对象.
    x = findMax(1, 123, 500, 115, 44, 88);
    
    function findMax() {
        var i, max = arguments[0];
    
        if(arguments.length < 2)return max;
    
        for (i = 0; i < arguments.length; i++) {
            if (arguments[i] > max) {
                max = arguments[i];
            }
        }
        return max;
    }
    
    • 函数调用的四种方式
    1. 作为函数被调用
    function myFunction(a, b) {
        return a * b;
    }
    myFunction(10, 2);           // myFunction(10, 2) 返回 20
    window.myFunction(10, 2);  //同上行
    
    1. 作为对象的方法被调用
    var myObject = {
        firstName:"John",
        lastName: "Doe",
        fullName: function () {
            return this.firstName + " " + this.lastName;
        }
    }
    myObject.fullName();         // 返回 "John Doe"
    
    1. 使用构造函数调用函数
    <script>
    function myFunction(arg1, arg2) {
        this.firstName = arg1;
        this.lastName  = arg2;
    }
    var x = new myFunction("John","Doe")
    document.getElementById("demo").innerHTML = x.firstName; 
    </script>
    
    1. 作为函数方法调用函数
    function myFunction(a, b) {
        return a * b;
    }
    myFunction.call(myObject, 10, 2);      // 返回 20
    
    function myFunction(a, b) {
        return a * b;
    }
    myArray = [10,2];
    myFunction.apply(myObject, myArray);   // 返回 20
    
    • 闭包
    <script>
    var add = (function () {
        var counter = 0;
        return function () {return counter += 1;}
    })();
    function myFunction(){
        document.getElementById("demo").innerHTML = add();
    }
    </script>
    

    这里需要注意的是,add变量代表的是一个方法function () {return counter += 1;}

    相关文章

      网友评论

          本文标题:JS入门学习

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