JavaScript基礎視頻教程總結(051-060章)

来源:https://www.cnblogs.com/iflygofy/archive/2018/12/14/10120239.html
-Advertisement-
Play Games

所有基礎課程鏈接: 1.JavaScript基礎視頻教程總結(001-010章) 2.JavaScript基礎視頻教程總結(011-020章) 3. JavaScript基礎視頻教程總結(021-030章) 4. JavaScript基礎視頻教程總結(031-040章) 5. JavaScript基 ...


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>051-060章總結</title>
</head>
<body>
    
<pre>
051. 函數的簡介
- 函數也是一個對象
- 函數中可以封裝一些功能(代碼),在需要時可以執行這些功能(代碼)
- 函數中可以保存一些代碼在需要的時候調用
- 使用typeof檢查一個函數對象時,會返回function
</pre>
<script type="text/javascript">
    console.log("第051");
    
    //我們在實際開發中很少使用構造函數來創建一個函數對象
    //可以將要封裝的代碼以字元串的形式傳遞給構造函數
    var fun11 = new Function("console.log('this is a first code')")
    //函數中的代碼會在函數調用的時候執行,調用函數 語法:函數對象()
    //當調用函數時,函數中封裝的代碼會按照順序執行
    fun11();
    /*
     * 使用 函數聲明 來創建一個函數
     *  語法:
     *      function 函數名([形參1,形參2...形參N]){
     *          語句...
     *      }
     */
    function fun12(){
        console.log("這是我的第二個函數~~~");
        document.write("~~~~(>_<)~~~~");
    }
    fun12();
    /*
     * 使用 函數表達式 來創建一個函數
     * var 函數名  = function([形參1,形參2...形參N]){
     *   語句....
     *  }
     */
    var fun13 = function(){
        console.log("我是匿名函數中封裝的代碼");
    };
    fun13();
</script>

<pre>
052. 函數的參數
可以在函數的()中來指定一個或多個形參(形式參數)
多個形參之間使用,隔開,聲明形參就相當於在函數內部聲明瞭對應的變數
但是並不賦值
</pre>
<script type="text/javascript">
    console.log("第052");
    
    // 定義一個用來求兩個數和的函數
    function sum21(a,b){
        console.log("a = "+a);
        console.log("b = "+b);
        console.log(a+b);
    }
    //在調用函數時,可以在()中指定實參(實際參數)
    //實參將會賦值給函數中對應的形參
    sum21(123,456);
    /*
     * 調用函數時解析器不會檢查實參的類型,
     * 所以要註意,是否有可能會接收到非法的參數,如果有可能則需要對參數進行類型的檢查
     * 函數的實參可以是任意的數據類型
     */
    sum21(123,"hello");
    sum21(true , false);
    /*
     * 調用函數時,解析器也不會檢查實參的數量
     *  多餘實參不會被賦值
     * 如果實參的數量少於形參的數量,則沒有對應實參的形參將是undefined
     * 
     */
    //sum(123,456,"hello",true,null);
    sum21(123);
</script>

<pre>
053. 函數的返回值
可以使用 return 來設置函數的返回值
語法:return 值
return後的值將會作為函數的執行結果返回,
可以定義一個變數,來接收該結果
在函數中return後的語句都不會執行
如果return語句後不跟任何值就相當於返回一個undefined,
如果函數中不寫return,則也會返回undefined
return後可以跟任意類型的值
</pre>
<script type="text/javascript">
    console.log("第053");
    
    // 定義一個用來求兩個數和的函數
    function sum3(arg1,arg2){
        var sum = arg1 + arg2
        return sum
    }
    var result = sum3(5,3)
    console.log(result)
</script>

<pre>
054. 實參可以是任何值
</pre>
<script type="text/javascript">
    console.log("第054");
    
    // 定義一個函數,判斷一個數字是否是偶數,如果是返回true,否則返回false
    function isOu(num){
        return num%2 ==0
    }
    var result = isOu(15)
    console.log(result)
    // 實參可以是任意的數據類型,也可以是一個對象
    // 當我們的參數過多時,可以將參數封裝到一個對象中,然後通過對象傳遞
    function sayhello(obj){
        var say = "我叫"+obj.name+"我今年"+obj.age
        return say
    }
    var person = {
        name:'小二',
        age: 18
    }
    var result = sayhello(person)
    console.log(result)
    // 實參可以是一個對象,也可以是一個函數
    function fun4(a){
        console.log("a ="+ a);
    }
    fun4(sayhello(person))
    /*
     * sayhello()
     *  - 調用函數
     *  - 相當於使用的函數的返回值
     * 
     * sayhello
     *  - 函數對象
     *  - 相當於直接使用函數對象
     */
</script>

<pre>
055. 返回值的類型
返回值可以是任意的數據類型
也可以是一個對象,也可以是一個函數
</pre>
<script type="text/javascript">
    console.log("第055");
    
    function fun51(){
        alert("函數要執行了~~~~");
        for(var i=0 ; i<5 ; i++){
            if(i == 2){
                //使用break可以退出當前的迴圈
                //break;
                //continue用於跳過當次迴圈
                continue;
                //使用return可以結束整個函數
                //return;
            }
            console.log(i);
        }
        alert("函數執行完了~~~~");
    }
    fun51();
    function fun52(){
        //返回一個對象
        return {name:"沙和尚"};
    }
    var a = fun52();
    console.log("a = "+a);
    function fun53(){
        //在函數內部再聲明一個函數
        function fun54(){
            console.log("我是fun54");
        }
        //將fun4函數對象作為返回值返回
        return fun54;
    }
    a = fun53();
    console.log(a);
    a();
    fun53()();
</script>

<pre>
056. 立即執行函數
函數定義完,立即被調用,這種函數叫做立即執行函數
立即執行函數往往只會執行一次
</pre>
<script type="text/javascript">
    console.log("第056");
    
    /*(function(){
        alert("我是一個匿名函數~~~");
    })();*/
    (function(a,b){
        console.log("a = "+a);
        console.log("b = "+b);
    })(123,456);
</script>

<pre>
057. 方法和枚舉屬性
</pre>
<script type="text/javascript">
    console.log("第057");
    
    var obj7 = {
        name:"孫悟空",
        age:18,
        gender:"",
        address:"花果山"
     };
    //枚舉對象中的屬性
    //使用for ... in 語句
    /*
     * 語法:
     *  for(var 變數 in 對象){
     *  
     *  }
     * 
     * for...in語句 對象中有幾個屬性,迴圈體就會執行幾次
     *  每次執行時,會將對象中的一個屬性的名字賦值給變數
     */
    for (var n in obj7){
        console.log("屬性名:"+n)
        console.log("屬性值:"+obj7[n])
    }
</script>

<pre>
058. 全局作用域
- 作用域指一個變數的作用的範圍
- 在JS中一共有兩種作用域:
1.全局作用域
- 直接編寫在script標簽中的JS代碼,都在全局作用域
- 全局作用域在頁面打開時創建,在頁面關閉時銷毀
- 在全局作用域中有一個全局對象window,
它代表的是一個瀏覽器的視窗,它由瀏覽器創建我們可以直接使用
- 在全局作用域中:
創建的變數都會作為window對象的屬性保存
創建的函數都會作為window對象的方法保存
- 全局作用域中的變數都是全局變數,
在頁面的任意的部分都可以訪問的到

變數聲明提前
- 使用var關鍵字聲明的變數,會在所有的代碼執行之前被聲明(但是不會賦值),
但是如果聲明變數時不適用var關鍵字,則變數不會被聲明提前
函數的聲明提前
- 使用函數聲明形式創建的函數 function 函數(){}
它會在所有的代碼執行之前就被創建,所以我們可以在函數聲明前來調用函數
使用函數表達式創建的函數,不會被聲明提前,所以不能在聲明前調用。
</pre>
<script type="text/javascript">
    console.log("第058");
    
    var a = 10;
    var c = "hello";
    console.log(window.c);
    function fun(){
        console.log("我是fun函數");
    }
    window.fun();
    //window.alert("hello");
    // 變數聲明提前
    console.log("a2 = "+a2);
    var a2 = 123;
    fun81();
    //函數聲明,會被提前創建
    function fun81(){
        console.log("我是一個fun函數");
    }
    //fun82();
    //函數表達式,不會被提前創建
    var fun82 = function(){
        console.log("我是fun2函數");
    };
    fun82();
</script>

<pre>
059. 函數作用域
- 調用函數時創建函數作用域,函數執行完畢以後,函數作用域銷毀
- 每調用一次函數就會創建一個新的函數作用域,他們之間是互相獨立的
- 在函數作用域中可以訪問到全局作用域的變數
在全局作用域中無法訪問到函數作用域的變數
- 當在函數作用域操作一個變數時,它會先在自身作用域中尋找,如果有就直接使用
如果沒有則向上一級作用域中尋找,直到找到全局作用域,
如果全局作用域中依然沒有找到,則會報錯 ReferenceError
- 在函數中要訪問全局變數可以使用window對象
</pre>
<script type="text/javascript">
    console.log("第059");
    
    var a01 = "全局a"
    function fun91(){
        var a01 = "我是fun91的a"
        var b01 = "我是fun91的b"
        console.log(a01)
        function fun92(){
            console.log(window.a01)
        }
        fun92()
    }
    fun91();
    //console.log(b01)
    /*
     * 在函數作用域也有聲明提前的特性,
     *  使用var關鍵字聲明的變數,會在函數中所有的代碼執行之前被聲明
     *  函數聲明也會在函數中所有的代碼執行之前執行
     */
    function fun93(){
        fun94()
        function fun94(){
            console.log(a02)
        }
        var a02 = "我是a"
    }
    fun93()
    //在函數中,不適用var聲明的變數都會成為全局變數
    function fun95(){
        d01 = "d01"
    }
    fun95()
    console.log(d01)
    //定義形參就相當於在函數作用域中聲明瞭變數
    var e = 23
    function fun96(e){
        console.log(e)
    }
    fun96() //undefined
</script>

<pre>
060. debug(調試)
</pre>
<script type="text/javascript">
    console.log("第060");
    
    var a60 = 123
    function fun60(a60){
        console.log(a60)
        a60=456
    }
    fun60() //undefined
    console.log(a60) // 123
    //
    var a61 = 123
    function fun61(a61){
        console.log(a61)
        a61=456
    }
    fun61(789) //789
    console.log(a61) //123
    
    alert(d60)
    var a62 = 10
    var b60 = 20
    c60 = true
    function fun62(){
        console.log("hello")
    }
    var d60 = 30
</script>

</body>
</html>

所有基礎課程鏈接:


 1.JavaScript基礎視頻教程總結(001-010章)           2.JavaScript基礎視頻教程總結(011-020章)          3. JavaScript基礎視頻教程總結(021-030章)        4. JavaScript基礎視頻教程總結(031-040章)

5. JavaScript基礎視頻教程總結(041-050章)           6. JavaScript基礎視頻教程總結(051-060章)         7. JavaScript基礎視頻教程總結(061-070章)        8. JavaScript基礎視頻教程總結(071-080章)

9. JavaScript基礎視頻教程總結(081-090章)          10. JavaScript基礎視頻教程總結(091-100章)        11. JavaScript基礎視頻教程總結(101-110章)      12. JavaScript基礎視頻教程總結(111-120章)

13. JavaScript基礎視頻教程總結(121-130章)        14. JavaScript基礎視頻教程總結(131-140章)


 另外,歡迎關註我的新浪微博

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一,將應用從設備上刪除時,並不會刪除其鑰匙串項,這使得調試工作困難得多。模擬器有一個Reset Contents and Settings選項,可用於將鑰匙串項移除。因此,強烈建議在模擬器上確定Keychain應用運行正常之後,再到設備上模擬。 二,keychain包含在框架Security.fra ...
  • flex-grow、flex-shrink、flex-basis這三個屬性的作用是:在flex佈局中,父元素在不同寬度下,子元素是如何分配父元素的空間的。 其中,這三個屬性都是在子元素上設置的。 註:下麵講的父元素,指以flex佈局的元素(display:flex)。 flex-basis 該屬性來 ...
  • React 深入系列,深入講解了React中的重點概念、特性和模式等,旨在幫助大家加深對React的理解,以及在項目中更加靈活地使用React。 React 中的元素、組件、實例和節點,是React中關係密切的4個概念,也是很容易讓React 初學者迷惑的4個概念。現在,我就來詳細地介紹這4個概念, ...
  • Modal(模態框) 首先,外引boostrap和Jquery的文件環境: 一般是按鈕或者鏈接觸發modal 首先添加一個大的div, fade:淡入淡出的效果 aria-hidden是為了隱藏模態框 然後在modal-content下,插入modal-header,modal-body,modal ...
  • 前言: 昨天剛看了插槽,以為可以解決我工作中遇到的問題,非常激動,我今天又仔細想了想,發現並不能解決。。。 不過還是記錄一下插槽吧,加深印象,嗯,就醬。 插槽作用: 插槽即:ReactDOM.createPortal(child, container) ,由ReactDom提供的介面。 可以實現將子 ...
  • 本文是基於Ant design Pro 2.0做的筆記,官方提供的demo(官方demo下載地址),路由是程式配置的,不能滿足項目需求,所以在研究過程中,把所遇到的問題,做一個筆記,最終效果圖如下: 一:需求描述 1 從介面獲取菜單,替換預設demo的菜單。 由於只是測試,所以並沒有使用servic ...
  • 一、Egg連接Mongodb方法一 Plugin.js中配置 Config.default.js配置 查詢語句使用 二、Egg中Mongoose的使用 https://www.npmjs.com/package/egg-mongoose 配置 Schema的建立數據表集合的映射新建app/modul ...
  • 1.在pycharm的已有工程中新建一個html文件。 2.在<body></body>標簽內部寫入要內容: 效果是: 心得: html和css是標簽語言,它的使用的初衷是為了在網頁上顯示出相應的圖像或是排版,所以在使用的時候,我目前感覺到最重要的一點就是註意沒有單元的位置。為了達到這個目的需要1. ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...