JavaScript數據類型-函數1

js數據類型(學習筆記) ----九層之臺,起於累土;javascript

什麼是函數

// 數據類型之function
    // 函數 具有必定功能的方法(你能夠經過函數封裝一些代碼執行必定邏輯)
    // 如何定義的 var 變量名 = 值

    // function 函數名() { // 函數體
    // // 執行的邏輯代碼
    // }

    // 函數定義
    function fe() {
      var message = 'hello function'
      alert(message)
    }

    // 函數的執行(就是執行函數體裏的代碼)
    // 函數名()
    // fe()

    // 函數能夠執行屢次(在你須要它的時候就可調用它)

    console.log('外面')



    // ƒ fe() {
    // console.log(123)
    // }
    // typeof fe // "function"


    // 定義了一個4跟2 求和的函數
    function add() {
      console.log(4 + 2)
    }


    function mul() {
      console.log(4 * 2)
    }
    mul()
    // alert()
    // console.log()

    // document.getElementById()
    // document.getElementsByTagName()
    // document.getElementsByClassName()

    // console.log(1)
    // console.log(1)
    // console.log(1)
    // console.log(1)
    // console.log(1)

    // for (var i = 0; i < 5; i++) {
    // console.log(1)
    // }
  

    // 一次定義 屢次複用
    function loop() {
      for (var i = 0; i < 5; i++) {
        console.log(1)
      }
    }
複製代碼

函數參數(形參和實參)

// 參數
    // 形參變量用來接收函數執行的時候 傳遞進來的值(實參跟函數裏的形參變量一一對應的)
    // 對於形參變量的值具體是什麼 就看你讓這個函數執行的時候 傳遞實參是什麼
    // function add(a, b, c) { // 形參(函數裏的變量)
    // // console.log(10 + 10)
    // console.log(a, b, c)
    // }

    var num = 2019 // 全局變量
    // 函數裏var(定義的變量)和形參變量都是函數裏的變量 只能在這個函數裏用
    // function fn(num) {
    // var abc = '123' // 函數裏面的變量(私有變量)
    // console.log(abc)
    // }

    // 全局做用域(正式課第一週)
    // console.log(123)

    // add(10, 20) // 傳了兩個參數(值)(實參)

    // function add2() {
    // console.log(20 + 20)
    // }

    // function add3() {
    // console.log(30 + 30)
    // }

    // function add4() {
    // console.log(40 + 40)
    // }

    // 定義一個add函數 可以讓任意兩數求和

    function sum(a, b) {
      console.log(a + b)
    }

    sum(10, 20)
複製代碼

arguments實參集合

// arguments 實參集合 (類數組)

    // 如何獲得函數傳遞進來參數
    // 1.經過形參接收
    // 2.arguments 實參集合來獲取

    // function add(a, b) {
    // console.log('arg0', arguments[0]) // 10
    // console.log('arg1', arguments[1]) // 20
    // console.log('a', a)
    // console.log('b', b)
    // console.log(typeof arguments) // "object"
    // }
    // add(10, 20)

    // 正常狀況下(非嚴格模式下)
    // 形參和arguments是有同步映射關係的(一個參數變了另個集合裏參數也跟着變)
    function fn(a, b, c) {
      console.log(arguments)
      arguments[1] = 200
      console.log(arguments)
      console.log(b)

      // a = 2018
      // console.log(a)
      // console.log(arguments)

      // console.log(arguments)
      // console.log(a, b, c)
    }
    fn(1, 2, 3)
    // 函數執行時 你傳遞進來多少個實參 arguments裏就會有多少個參數

    // 求和做業 傳多少個數字實參 就給我累加多少 把結果return出來
    function add() {
      for (var i = 0; i < arguments.length; i++) {
        console.log(i, arguments[i])
      }
      // return 
    }
    add(1, 2, 3, 4)

    // function sum() {
    // // var total = 0;
    // var total = null;
    // for (var i = 0; i < arguments.length; i++) {
    // total += arguments[i]; // total = total + arguments[i]
    // console.log(total) // 1 3 6
    // }
    // return total;
    // }
    // console.log(sum(1, 2, 3));

    // 只有是number類型纔會進行累加操做
    // function sum() {
    // var total = null;
    // for (var i = 0; i < arguments.length; i++) {
    // // 若是集合中這個參數是數字 再進行累加
    // if (typeof arguments[i] === 'number') { // 'string'
    // total += arguments[i]; // 累加操做
    // }
    // }
    // return total;
    // }
    // var a = sum(1, 2, 3, '10', undefined)

    // 任意數求和
    // function sum() {
    // var total = null;
    // for (var i = 0; i < arguments.length; i++) {
    // var num = arguments[i]
    // if (typeof num === 'number' && !isNaN(num)) {
    // total += num; // total = total + num
    // }
    // }
    // return total;
    // }
    // var a = sum(1, 2, 'abc', NaN, 10)

    // console.log(a);
複製代碼

任意數求和

// 若是當前參數能夠轉換成數字 我就累加(容許純數字字符串)
    function sum() {
      var total = null;
      for (var i = 0; i < arguments.length; i++) {
        console.log('轉換前1', arguments[i])

        // num變量用來存儲 轉換後的值
        var num = Number(arguments[i])
        console.log('轉換後2', num)

        if (!isNaN(num)) {
          total += num;
        }
      }
      return total;
    }
    var a = sum(1, 2, 10, '123', '10px')
    console.log(a)

    function sum() {
      var total = null;
      for (var i = 0; i < arguments.length; i++) {
        // var num = Number(arguments[i]) // '123'
        // var num = parseInt(arguments[i]) // '10px'
        var num = parseFloat(arguments[i]) // '10.123px'
        if (!isNaN(num)) {
          total += num;
        }
      }
      return total;
    }
    var a = sum(1, 2, 10, '123', '10.50px')
    console.log(a)
複製代碼

函數的返回值

// 函數的返回值
    // function add(a, b) {
    // // console.log(a + b)
    // a + b
    // return 'hello' // 返回值 經過return關鍵字 來指定 這個函數執行後返回到外面的結果
    // }
    // // 函數() 表明是函數執行的意思 同時函數名() 總體 表明函數返回的結果
    // // console.log(add(10, 20))
    // // console.log(add(10, 20))
    // console.log(add())

    // 定義部分
    // function add(a, b) {
    // var total = a + b
    // // return total // return 後面跟着的是 一值
    // // return a + b
    // // return {id: 1}
    // }

    // console.log(add(10, 20))
    // 在函數外面定義一個變量sum 接收add這個函數執行後返回值(返回結果)
    // var sum = add(10, 20)
    // console.log(sum)
    // console.log(sum + 100)

    // var sum1 = add(100, 100)
    // console.log(sum1)

    // add 函數名 表明是這個函數自己(也就說明add這個變量存儲的是這個函數體)
    // console.log(add) 定義部分

    // 函數名() 讓函數執行 同時表明函數執行後的返回值
    // add()
    // console.log(add())

    // function fn(a, b) {
    // return a + b // return 整個函數執行就結束了 而且後面代碼都不會再執行了
    // console.log(100)
    // }
    // console.log(fn(10, 10))

    // function fn(a, b) {
    // console.log(100)
    // return a + b // return 整個函數執行就結束了 而且後面代碼都不會再執行了
    // }
    // console.log(fn(10, 10))

    function fn(a, b) {
      var total = a + b
      if (total > 10) {
        return '這個值是大於10'
      } else {
        return '這個是10之內加法'
      }
      console.log('我是後面的代碼')
    }
    // console.log(fn(10, 10))
    // console.log(fn(1, 2))


    function loop(n) {
      for (var i = 0; i < n; i++) {
        console.log(i) // 5
        if (i === 5) {
          return '當前i=5' // 整個函數執行結束 而且循環也結束了
        }
        console.log('我是循環體裏的')
      }
    }
    console.log(loop(10))
複製代碼

函數表達式(自執行函數 函數直接量)

// function fn() { // 函數定義部分
    // console.log(123)
    // }

    // console.log(fn) // 函數自己

    // 代碼執行到這一行是 纔將fn賦值爲函數
    // 函數表達式 只能在函數定義後 使用
    // var fn = function (a) {
    // console.log(a)
    // // console.log(arguments)
    // }
    // console.log(fn)
    // fn(100)

    // 匿名函數 沒有名字的函數

    // 自執行函數
    // (function(a) { // 聲明形參
    // console.log('自執行', a)
    // console.log('自執行', arguments)
    // })(100) // 傳實參

    // n 是用來接收 自執行函數執行後的返回值 並非把這個函數賦值給變量n
    // var n = (function () {
    // return 100
    // })()
    // console.log(n)

    // 自執行函數其餘寫法
    // +function() {

    // }()

    // ~function() {

    // }()

    // !function() {

    // }()
    
    var bar = 100;

    // 再前面加個分號
    ;(function() {

    })()

    //
    // !至關於返回值取反 輸出true
    // !function() {
    // console.log(12312)
    // }()
複製代碼

----------------------------------------------------------------------------------------------------------------
參考文章&&強烈推薦:布羅利java

相關文章
相關標籤/搜索