zoukankan      html  css  js  c++  java
  • JavaScript函数

    函数:
    一段 JavaScript 代码,它只定义一次,但可能被执行或调用多次。函数就是一组可重用的代码。
    函数的定义:
    /*
    函数定义,先定义在调用
    函数声明方式
    function 函数名(){
    函数体
    }
    */
    function fn1(){
    console.log('this is text');
    }
    /*
    字面量的方式定义
    var 函数名=function(){
    函数体
    }
    */
    var fn2=function () {
    console.log('this is text');
    }
    var fn3=function(){}
    /*
    javaScript是弱类型或松散类型
    当变量定义为初始化时 ,变量的值的类型不确定
    当变量被初始化时,类型确定
    */
    函数的调用
    定义一个函数并不会自动的执行它。定义了函数仅仅是赋予函数以名称并明确函数被调用时该做些什么。调用函数才会真正执行这些动作。
     1 //1.声明方式
     2 function fn1() {
     3 console.log('this is text');
     4 }
     5 //函数的调用
     6 fn1();
     7 //2.字面量方式
     8 var fn2=function () {
     9 console.log('this is text');
    10 }
    11 //函数的调用
    12 fn2();
    13 函数与变量
    14 //变量与函数同名时,出现覆盖和别覆盖的现象
    15 var fn='this is text';
    16 console.log(fn);
    17 var fn=function () {
    18 console.log('this is function');
    19 }
    20 console.log(fn);//函数将变量覆盖
    21 fn();
    22  
    23 var fn='this is text';
    24 console.log(fn);
    25 function fn() {
    26 console.log('this is function');
    27 }
    28 console.log(fn);//变量没有被函数覆盖
    29 fn();//调用函数,fn不是一个函数
    函数参数
    函数的参数就相当于在函数中使用的变量(虽然这个比方不是很准确)。JavaScript 中的函数定义并未制定函数参数的类型,函数调用时也未对传入的参数做任何的类型检查。函数的参数可以分为以下两种:
    -形参: 出现在函数定义文法中的参数列表是函数的形式参数,简称形参 。简单来说,就是定义函数时使用的参数就是形参。
    -实参: 函数调用时实际传入的参数是函数的实际参数,简称实参。 简单来说,就是调用函数时使用的参数就是实参。
     1 //函数的定义-形参:在函数体中,形参可以类似于变量的使用
     2 // 函数的形参:在函数体外,是无法被访问(调用)的
     3 /*function fn(a) {
     4 console.log(a)
     5 }
     6 */
     7 // 函数的调用 - 实参:在函数体中,定义对应形参的值
     8 // fn(100);
     9  
    10  
    11 // var a=100;
    12 // function fn() {
    13 // console.log(a);
    14 // }
    15 // fn();
    16  
    17  
    18 // 在函数的函数体外,也可以被正常访问(调用)
    19 // console.log(a);
    20 // function fn() {
    21 // var a=100;
    22 // console.log(a);
    23 // }
    24 // fn();
    25 // console.log(a);
    26  
    27 // 在函数体中定义的变量,不能用于函数体外
    28 // function fn(){
    29 // var a = 100;// 变量的定义
    30 // console.log(a);
    31 // }
    32 // fn();
    33 // console.log(a);
    return 语句
    函数还可以包含一个返回语句(return)。当然,这并不是必需的。return 语句使函数可以作为一个值来使用
     1 var fn=function () {
     2 var a=100;
     3 console.log('xxx');
     4 return 200;
     5 // 函数的返回值 return,尽量定义在函数体的最后面
     6 // 如果定义的代码在 return 语句之后,不会被执行
     7 }
     8 //变量的调用方式
     9 console.log(fn);//输出function的类型
    10 fn();//函数的调用方式
    11 console.log(fn());//将函数的调用结果,输出打印
    12 预定义函数
    13 // 定义一个字符串类型的JavaScript代码
    14 eval(str);
    15 var str="console.log(\"this is test.\")"
    16 // 将JavaScript代码当作普通的文本内容输出
    17 eval(str);
    编码解码问题
    1 var uri="http://www.atguigu.com/Web前端开发工程师"
    2 //涉及中文,不能被正确显示或使用
    3 var encode=encodeURI(uri);// 对字符串进行编码
    4 console.log(encode);
    5 var decode=decodeURI(encode);// 对字符串进行解码
    6 console.log(decode);
    作用域
    变量和函数都具有作用域。作用域就是变量和函数的可被访问的范围,控制着变量和函数的可见性和生命周期。
    变量的作用域
    全局变量
    在所有函数之外声明的变量,叫做全局变量
     1 //全局变量-被定义在全局作用域的变量
     2 // var str='this is text';//在全局作用域中允许访问
     3 // console.log(str);
     4  
     5 function fn() {
     6 //在函数作用域中访问
     7 var str='this is function';
     8 console.log(str);
     9 }
    10 fn();
    11 //在全局作用域(非函数作用域)中不能访问局部变量
    12 console.log(str);
    13 局部变量
    14 在函数内部声明的变量,叫做局部变量
    15 // 在函数作用域中,定义局部变量,不使用 var 关键字时 - 自动提升为全局变量
    16 function fn() {
    17 // 定义局部变量 - 这种不使用 var 关键字,在严格模式下是不允许的
    18 var str='this is function';
    19 console.log(str)
    20 }
    21 fn();
    22 // 在全局作用域中 - 该变量是全局变量
    23 console.log(str)
    24  
    25 function fn() {
    26 console.log(str);//undefined
    27 var str='this is text';
    28 console.log(str);// this is text*/
    29 }
    30 fn();
    声明提前
    1 // console.log(str);
    2 // var str='this is text';
    3 // console.log(str);
    4 function fn() {
    5 console.log(str);//undefined
    6 var str='this is text';
    7 console.log(str);// this is text*/
    8 }
    9 fn();
    按值传递
    按值传递就是指将实参变量的值复制一份副本给函数的形参变量。JavaScript 中为函数传递参数时,都是按值传递的。如果向函数传递的参数是原始类型数据,则在函数中修改参数变量的值,不会影响外部实参的变量。
    1 var str=100;//定义全局变量
    2 // 函数的形参 - 函数体中改变的都是形参的值,与全局变量无关
    3 function fn(str) {
    4 console.log(str);//100
    5 str = str -10;
    6 console.log(str);//90
    7 }
    8 fn(str); //函数的实参对应的是全局变量
    9 console.log(str);//100
    全局函数
    函数与变量类似,具有全局作用域和函数作用域(局部作用域)。与全局变量类似,全局函数是被定义在全局作用域的,在任何位置都可以访问或调用该函数。
    function fn( num1, num2){ console.log( num1 + num2 );// 输出 3 } fn( 1, 2 );
    内部函数
    function fn () {
    //内部函数
    function n() {
    // 在函数作用域中定义的函数 - 内部(私有)函数
    console.log('this is function');
    }
    // 在当前函数作用域中允许访问
    n();
    }
    fn();
    // 在指定函数作用域外,不允许访问
    n;
  • 相关阅读:
    Code Forces 650 C Table Compression(并查集)
    Code Forces 645B Mischievous Mess Makers
    POJ 3735 Training little cats(矩阵快速幂)
    POJ 3233 Matrix Power Series(矩阵快速幂)
    PAT 1026 Table Tennis (30)
    ZOJ 3609 Modular Inverse
    Java实现 LeetCode 746 使用最小花费爬楼梯(递推)
    Java实现 LeetCode 745 前缀和后缀搜索(使用Hash代替字典树)
    Java实现 LeetCode 745 前缀和后缀搜索(使用Hash代替字典树)
    Java实现 LeetCode 745 前缀和后缀搜索(使用Hash代替字典树)
  • 原文地址:https://www.cnblogs.com/anjing940/p/7737024.html
Copyright © 2011-2022 走看看