zoukankan      html  css  js  c++  java
  • js变量问题

    this指向问题,谁调用它,它就指谁!!!

    1、var foo = 1;

    function bar() {

        foo = 10;

        return;

        function foo() {}

    }

    bar();

    alert(foo);

    • A  1
    • B  10
    • C  Function
    • D  undefined
    • E   Error

    2、var x = 3;

     

    var foo = {

        x: 2,

        baz: {

            x: 1,

            bar: function() {

                return this.x;

            }

        }

    }

     

    var go = foo.baz.bar;

     

    alert(go());

    alert(foo.baz.bar());

    • A   1,2
    • B   1,3
    • C   2,1
    • D   2,3
    • E    3,1
    • F    3,2

    3.

    var arr = [];

    arr[0]  = 'a';

    arr[1]  = 'b';

    arr.foo = 'c';

    alert(arr.length);

    • A   1
    • B   2
    • C   3
    • D   undefined

    4、

    var foo = 1;

    function bar() {

    foo = 10;

    return;


    }

    bar();

    alert(foo);

     5、

    var foo = 1;

    function bar() {

    //下面这段代码,可能就是声明了一个局部变量foo=10;函数先声明提前,然后赋值,

    foo = 10;
    alert(foo);

    return;

    function foo() {}

    }

    bar();

      

     关于问题1:难道一执行函数,里面的申明会再次置顶。

    http://www.cnblogs.com/bugda/p/6036282.html

    JS中变量名和函数名重名

     

    var a=100;
    function a(){
      console.log(a);
    }
    a();

    这个串代码执行完会报错 : a is not a function

    问题来了,为什么会报这个错误呢?  这里涉及到函数和变量的预解析:

    1)函数声明会置顶
    2)变量声明也会置顶
    3)函数声明比变量声明更置顶:(函数在变量上面)
    4)变量和赋值语句一起书写,在js引擎解析时,会将其拆成声明和赋值2部分,声明置顶,赋值保留在原来位置
    5)声明过的变量不会重复声明

    知道以上的规则,上面的代码等同于 :  

    var a=function (){
      console.log(a);
    }
    var a=100;
    a();

    相当于给a重新赋值了,所以会报错.

    链接:http://www.jb51.net/article/55200.htm

    函数定义表达式
    var fns = function (){
    // ...
    };
    // 函数声明语句
    function fns(){
    // ...
    }

    函数声明语句“被提前”到外部脚本或外部函数作用域的顶部,所以以这种方式声明函数,可以被再它定义之前出现的代码所调用。而函数定义表达式中,变量的声明被提前了,但是给变量的赋值是不会提前的,所以,以表达式方式定义的函数在函数定义之前无法调用。

  • 相关阅读:
    JavaScript匿名函数的使用
    __construct __destory __call __get __set
    嵌入式学习
    动态加载script文件
    Android框架Volley使用:Post请求实现
    Android框架Volley使用:Get请求实现
    安卓开发笔记(三十五):Cardview的简单使用
    安卓开发笔记(三十四):Material Design框架实现优美的左侧侧滑栏
    Android APK反编译技巧全讲解
    Java数据结构(一):栈
  • 原文地址:https://www.cnblogs.com/zhangzs000/p/6259082.html
Copyright © 2011-2022 走看看