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;
  • 相关阅读:
    【33】避免遮掩继承而来的名称
    调用异步方法
    Python 调用C++
    【37】绝不重新定义继承而来的缺省参数值
    【36】绝不重新定义继承而来的non-virtual方法
    【38】通过复合塑模出Has-A 或根据某物实现出
    【转】C++ function、bind以及lamda表达式
    mongodb
    mongodb
    mongodb
  • 原文地址:https://www.cnblogs.com/anjing940/p/7737024.html
Copyright © 2011-2022 走看看