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

相关文章
相关标签/搜索