zoukankan      html  css  js  c++  java
  • HK&&CC JS学习:第一周——NO.2this

    1)常用的命名规范:
        aXXXX:aBtn 说明获取的是一组元素;--类数组
        oXXX:oBtn 说明获取的是一个元素-》对象
            对象有两个重要的特点:属性 和 方法;
            属性和方法的区别:属性没括号 方法有括号
        bxxx:bOk 代表布尔值 true、false
        reg/re :代表正则;
        str:字符串
        ary/arr/array:数组
    2)带var和不带var的区别:
    带var:1)在全局作用域下,变量相当于window的全局属性 2)带var会进行预解释
    不带var:1)相当于window的全局属性 2)重要:不带var不会进行预解释;
    3)预解释无节操:
        1)只对等号左边带var的声明,但不定义;
        2)自执行函数不会进行预解释,只有执行到他的时候,声明+定义+调用同步完成
        3)已经声明过的变量,不会进行重复声明
        4)return后面的语句不会进行预解释,return下面的语句,虽然不执行,但会进行预解释;
        5)条件判断语句中:无论条件是否成立,都会进行预解释
            警示:不要在条件判断语句中,写函数的定义阶段
    4)在预解释的时候,函数的优先级>变量
    5)运算符的优先级:算术运算符》比较运算符》逻辑运算符》赋值运算符
        所以,以后遇到赋值的时候,一定要加括号;
    6)点击任何一个按钮的时候,弹出他对应的索引:
              1)自定义属性解决方式->本质:把正确的i值保存到对象的私有属性上;
              2)闭包-》本质:把正确的i值保存到不同的私有作用域中;
    7)关于this的用法:
        1.当元素身上的事件被触发的时候,会执行一个函数,函数中的this,指向当前这个元素
        2.函数被调用的时候,看前面是否有点,点前面是谁,this就是谁;如果没有点,默认是被window调用的;
        3.自执行函数中的this都是window;
    8)内存和内存释放:
    内存主要包含:堆内存和栈内存;
    栈内存:全局作用域和私有作用域;
           作用:提供了一个供JS代码执行的环境;里面放的是基本数据类型的数据;
    堆内存:作用:就是用来存放引用数据类型的数据:
           对象数据类型:存放的是属性名和属性值;
           函数数据类型:把函数体中的所有JS代码,作为字符串存在堆内存空间中
    内存释放:
        堆内存的释放:让变量指向空指针;
        var obj={key:value}; obj=null;
        栈内存的释放:
            全局作用域:形成:当浏览器加载完页面的时候,会形成一个供JS代码执行的全局作用域;
                      释放:关闭页面、关闭浏览器;
            私有作用域:形成:函数被调用的时候;
            一般情况下,当函数执行完成的时候,都会默认进行释放,但是两种特殊情况除外:
                1)不释放:当函数体中的任何东西,被外面的变量或者其他东西占用的时候,该函数不释放;
                2)不立即释放:当函数执行完成的时候,返回一个需要执行的函数;需要等待所有的函数都执行完成的时候,该函数才能释放;例如fn( )( )
    一般有三种情况:
    ①函数执行返回了一个引用数据类型的值,并且在函数的外面被一个其他的东西接收了,这种情况下一般形成的作用于都不会被销毁;
    ②在一个私有作用域中给DOM元素的时间绑定方法,一般私有作用域不销毁;
    ③不立即销毁
     
    9)上级作用域:跟函数在哪里调用无关,只跟该函数对应的堆内存在哪里开辟有关;
    10)
    ++i:先++,再运算
    i++:先运算,再++;再++的时候,只是自身的增加,跟运算无关;
    ..................................................................
    例题: 
    var n=[12,34,56,8];
    function fn(a){
        a[0]=100;
        a=[];
        a[a.length]=300;
        console.log(a);
    }
    fn(n);
  • 相关阅读:
    将数组格式的字符串转换成数组
    引号嵌套引起的问题
    如何使用for循环把对象push到数组中,且前面的值不会被覆盖
    如何把一个大的对象,转成若干个小对象,然后在放到数组中
    前端如何设置一天只能点击一次的以及如何去判断第二天0点刷新的一些问题
    let和const的理解以及let,const,var的区别
    watch监控和computed监控
    媒体查询
    react中redux+react-redux插件的应用
    react中控制div的位置移动动画
  • 原文地址:https://www.cnblogs.com/HKCC/p/6048375.html
Copyright © 2011-2022 走看看