zoukankan      html  css  js  c++  java
  • JavaScript 小知识

    1.var 变量

     <script type="text/javascript">
           var a = "hong";
           var fun = function () {
               var a = "aa";
               console.log(a);
           }
           console.log(a);  //hong  
           fun();           //aa 
        </script>

    有局部变量与全局变量同名,在方法内优先使用局部变量

     <script type="text/javascript">
           var a = "hong";
           var fun = function () {
               a = "aa";
               console.log(a);
           }
           console.log(a);  //hong  
           fun();           //aa 
           console.log(a);  //aa
        </script>

    可以看出在方法中对全局变量进行了修改

     <script type="text/javascript">   
           var fun = function () {
               a = "aa";
               console.log(a);
           }
          // console.log(a);  //hong  
           fun();           //aa 
           console.log(a);  //aa
        </script>

    在这里a没有var修饰,它是隐式的全局变量

    <script type="text/javascript">
           var a = "hongda";
           function fun() {
               console.log(a);  
               var a = "aaa";
               console.log(a);   
           }
           fun();   //undefined    aaa
        </script>

    在这里要注意var的声明,在方法内部不管在什么地方声明,都跟它们在函数的顶部声明一样

      function fun() {
               var a = b = c = 0; //这样错误,b,c都是隐式的全局变量了
               var aa, bb,
                   cc = "hongda",
                   dd = 10;      //这样是好的
           }

     查看全局变量与隐式全局变量

     <script type="text/javascript">
           var a = "hongda";
           b = "bb";  
           console.log(a);  //hongda
           console.log(b);  //bb
           delete (a);
           delete (b);
           console.log(a);  //hongda
           console.log(b);  //b不存在了,已经被删除了
        </script>

    在技术上,隐式全局变量并不是真正的全局变量,但它们是全局对象的属性。属性是可以通过delete操作符删除的,而全局变量是不能的,但全局变量也是window的属性

    为什么隐式全局变量可以被删除,而全局变量不可以被删除?

     <script type="text/javascript">
           function f() {
               this.aa = "hongda";
           }
           f.prototype.bb = "bb";
           var ff = new f();
           console.dir(ff);
           delete (ff.aa);
           delete (ff.bb);
           console.dir(ff);
        </script>

    可以发现函数内部的aa被删除了

    隐式全局变量可以被删除是不是这样的关系,我也不清楚?

     js函数的声明:

      function fun() {
               console.log("fun");
               console.log(typeof fun);
           }
    
           var f = function () {
               console.log("fun2");
           }
    
           var f2 = function fu() {
               console.log("fun3");
               console.log(typeof fu);
           }
           fun();
           f();
           f2();
           console.log(typeof fu);

    大概就是这样的三种方式,

    第一种,直接声明一个函数

    第二种,先声明一个变量f,再声明一个匿名函数,将匿名函数赋值给变量f,赋值以后f的类型才为function

    第三种,先声明一个变量f2,再声明一个函数fu,只是这个fu只能在该函数的内部使用,不能在外部使用

    2.for循环

    <script type="text/javascript">
           var array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
           for (var i = 0; i < array.length; i++) {
               console.log(i + ":" + array[i]);
           }
           var obj = { name: "hongda",
               age: 27,
               country: "china",
               say:function(){alert("fd");}
           }
           for (var o in obj) {
               console.log(o + ":" + obj[o]);
           }
           for (var i in array) {
               console.log(i + ":" + array[i]);
           }
        </script>

    一般应用时,使用for in 遍历对象内部的属性,使用for()来遍历数组,for in 也可以用来遍历数组,因为数组也是个对象,但for in 遍历对象属性是不一定是顺序的,所以数组还是使用for()好

    3.hasOwnProperty

    就是去除对象内部从相对应的prototype中获取的属性

     http://www.cnblogs.com/hh54188/archive/2013/05/12/3074358.html

    http://www.cnblogs.com/TomXu/archive/2011/12/28/2286877.html

  • 相关阅读:
    修改ASP.NET MVC Ajax分页组件ASP.NET MvcPager一个小Bug并修该样式为自己所用(一)
    HighCharts报表 API
    自动化开发资料
    修改ASP.NET MVC Ajax分页组件ASP.NET MvcPager一个小Bug并修该样式为自己所用(三)
    网络营销资料收集
    C#扩展方法
    UI Automation Under the Hood (1)
    C#辅助类之ConfigHelper
    设计模式资源汇总
    Windows GUI自动化测试
  • 原文地址:https://www.cnblogs.com/hongdada/p/3141951.html
Copyright © 2011-2022 走看看