zoukankan      html  css  js  c++  java
  • js

    <script type="text/javascript"> 
    var x = 1; 
    var y = 0; 
    var z = 0; 
    function add(n){n=n+1;} 
    y = add(x); 
    function add(n){n=n+3;} 
    z = add(x); 
    s=y+z;
    </script>
    
    求:
    y的值是?
    z 的值是?
    s的值是?
    
    我相信,肯定有同学会答错,当然,不是说他们不会,而是他们可能太大意了!
    
    我们首先看function add,两个add都没有返回值,而我们知道,没有明确返回值的,全部返回undefined,所以,y和z都会是undefined,那么s自然也就不会是一个数字了,没错,s应该是NaN。
    
    假如我们将题目改一下呢?如下:
    <script type="text/javascript"> 
    var x = 1; 
    var y = 0; 
    var z = 0; 
    function add(n){return n=n+1;} 
    y = add(x); 
    function add(n){return n=n+3;} 
    z = add(x); 
    s=y+z;
    </script>
    
    两个function add都有返回值了,那么,y,z,s会是多少呢?
    不错,y和z都是4,s是8,为什么y不是2而是4呢?因为在javascript中,直接通过function申明的函数,后面定义的,会影响到之前的引用,如下:
    
    <script type="text/javascript">
    function x(){alert(2)};
    x();//output 3
    function x(){alert(3)};
    x();//output 3
    </script>
    
    如果是通过var来申明的函数会是什么情况呢?我们看看:
    
    <script type="text/javascript">
    var x = function(){alert(0)};
    x();//output 0
    var x=function(){alert(1)};
    x();//output 1
    x();//output 1
    </script>
    
    通过var申明的函数,后面定义的并不会影响前面的引用。
    
    如果两种模式混合,又会是什么情况呢?
    
    <script type="text/javascript">
    function x(){alert(2)};
    x();//output 3
    var x = function(){alert(0)};
    x();//output 0
    var x=function(){alert(1)};
    x();//output 1
    function x(){alert(3)};
    x();//output 1
    </script>
    
    结果是这样的,你猜到了吗?
    
    通过function定义的函数,后面定义的,照旧影响了前面的引用,但是不能改变通过var申明函数后的引用,反而,通过var申明的函数,改变了后来通过function申明函数之后的引用。
    
    所以,如果:
    <script type="text/javascript">
    var x=function(){alert(1)};
    x();
    function x(){alert(3)};
    x();
    </script>
    后面的x()出来的也会是1。
    View Code
    for(i=0,j=0; i<10,j<6; i++,j++){
        k = i + j;
    }
    alert(k);       //弹出10
    
    
    for(i=0,j=0; i<6,j<10; i++,j++){
        k = i + j;
    }
    alert(k);       //弹出18
    View Code
    (function(){var a=b=5})();
    
    console.log(b);
    
    console.log(a);
    
    为何b有值,a没有
    
    b=5是全局变量,var a=b是局部变量所以a在外部是访问不到的
    View Code
    var scope = 'global';  
        var f = function() {  
            console.log(scope); // 输出 undefined  
            var scope = 'f';  
        }  
        f();  
    View Code
    三种强制类型转换:String(),Boolean(),Number();
    2种隐式类型:+和-
    View Code
    $arr1=array("dog","cat","bird");
    
    $arr2=array("people","dog","mouse");
    
    $arr = array_unique(array_merge($arr1,$arr2));
    
    var_dump($arr);
    View Code
  • 相关阅读:
    C#将一个字符串数组的元素的顺序进行反转
    C#找出100内所有的素数/质数
    C#流程控制for循环语句,水仙花数。
    C# 常用的操作文件夹的方法
    Element UI
    JS
    JS
    PHP基础算法
    js实现csv下载
    el-dialog“闪动”解决办法
  • 原文地址:https://www.cnblogs.com/nick477931661/p/9185201.html
Copyright © 2011-2022 走看看