JavaScript笔记03

函数

JavaScript函数语法

JavaScript函数通过Function关键词进行定义,其后是函数名和括号()。
函数名可包含字母、数字、下划线、美元符号(规则与变量名相同)。
圆括号可包括有都好分隔得参数:

(参数1,参数2,…)

有函数执行得代码呗放置在花括号中:{}

function name (参数1,参数2,参数3){
	要执行得代码
}

函数参数(Function parameters)是在函数定义中所列的名称。
函数参数(Function arguments)是当调用函数时由函数接收的真实的值。
在函数中,参数是局部变量。

函数调用

函数中得代码将在其他代码调用该函数时执行:

  • 当事件发生时(当用户点击按钮时)
  • 当JavaScript代码调用时
  • 自动得(自调用)

函数返回

当JavaScript到达return语句,函数将停止执行。如果函数被某条语句调用,JavaScript 将在调用语句之后“返回”执行代码。

函数通常会计算出返回值。这个返回值会返回给调用者

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JS函数</title>
    <script>
        function f(x) {/*function 指出这是一个函数定义;f 代表函数的名称*/
            if (x > 0) {/*(x)代表函数的参数,可以多个参数,用','隔开*/
                return x;
            }else {
                return -x;
            }
        }

        // arguments - js中的一个关键字,只在函数内部起作用,永远指向函数内部
        // 传入的所有参数,和array很想,但是又不是array
        function a(x) {
            console.log('x = ' + x);
            for (var i = 0; i < arguments.length;i++){
                console.log('arguments' + i + '=' + arguments[i]);
            }
        }
        console.log(a(10,20,30,'xi','dd'));
        function a2(a, b, c) {
            if (arguments.length == 2) {
                // 实际拿到的参数a和b,c为undefined
                c = b;
                b = null;
                return c;
            }
        }
        console.log(a2(1,2))

    //    rest参数
        function sum(a,b) {
            var i, rest=[];
            if (arguments.length > 2) {
                for (i = 2; i < arguments.length; i++){
                    rest.push(arguments[i]);
                }
            }
            console.log('a = ' + a);
            console.log('b = ' + b);
            console.log(rest);
        }
        console.log(sum(2,3,4,5,7,8));


    </script>
</head>
<body>
</body>
</html>

javascript自动在行尾添加分号机制

1.分号(;),通常会用在一行语句的结尾,代码如下:

var webName = "hello word";
var url = "www.baidu.com";
document.write(webName,url);

输出结果:
在这里插入图片描述
2.当将代码末尾去掉分号后,代码如下:

var webName = "hello word"
var url = "www.baidu.com"
document.write(webName,url)

输出结果为:
在这里插入图片描述
3.由于编译器会在每一行后面都自动添加了分号,所以输出值undefined,不是"hello word"。

function add(webName){
  return
  webName
}
console.log(add("hello word"));

在这里插入图片描述

变量作用域与解构赋值

在JavaScript中,用var申明的变量实际上是有作用域的。

如果一个变量在函数体内部申明,则该变量的作用域为整个函数体,在函数体外不可引用该变量:

'use strict';

function foo() {
    var x = 1;
    x = x + 1;
}

x = x + 2; // ReferenceError! 无法在函数体外引用变量x

不同函数内部得同名变量互相独立,互不影响:

function foo() {
        var x = 1;
        x = x + 1;
        return x;
    }
console.log(foo());
function bar() {
    var x = 'A';
    x = x + 'B';
    return x;
}
console.log(bar());

在这里插入图片描述
由于JavaScript的函数可以嵌套,此时,内部函数可以访问外部函数定义的变量,反过来则不行:

function foo() {
    var x = 1;
    function bar() {
        var y = x + 1; // bar可以访问foo的变量x!
    }
    var z = y + 1; // ReferenceError! foo不可以访问bar的变量y!
}

全局作用域

不在任何函数内定义的变量就具有全局作用域。实际上,JavaScript默认有一个全局对象window,全局作用域的变量实际上被绑定到window的一个属性:

var course = 'Learn JavaScript';
alert(course); // 'Learn JavaScript'
alert(window.course); // 'Learn JavaScript'

因此,直接访问全局变量course和访问window.course是完全一样的。

解构赋值

从ES6开始,JavaScript引入了解构赋值,可以同时对一组变量进行赋值。

什么是解构赋值?我们先看看传统的做法,如何把一个数组的元素分别赋值给几个变量:

var array = ['hello', 'JavaScript', 'ES6'];
var x = array[0];
var y = array[1];
var z = array[2];

现在,在ES6中,可以使用解构赋值,直接对多个变量同时赋值:

// 如果浏览器支持解构赋值就不会报错:
var [x, y, z] = ['hello', 'JavaScript', 'ES6'];

在这里插入图片描述
解构赋值还可以忽略某些元素:

let [, , z] = ['hello', 'JavaScript', 'ES6']; // 忽略前两个元素,只对z赋值第三个元素
z; // 'ES6'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值