JS基础

作者: lifefruity | 来源:发表于2021-04-07 17:35 被阅读0次

1. 变量提升

<div id='str'></div>
<script>

    //1. 变量提升 : JavaScript 中,函数及变量的声明都将被提升到函数的最顶部
    
    //例子1
    elem = document.getElementById('str').innerHTML = bb;
    var bb = 'tom';//这样是undefined
    
    
    //例子2
    bb = 'tom';//先设置
    elem = document.getElementById('str').innerHTML = bb;
    var bb;//再声明,显示tom
    
    
    //例子3
    var x = 5; // 初始化 x
    elem = document.getElementById("str"); // 查找元素
    elem.innerHTML = x + " " + y;           // 显示 x 和 y
    var y = 7; // 初始化 y,显示  5 undefined
    
    
    //例子4 等价于 例子3
    var x = 5; // 初始化 x
    var y;     // 声明 y
    elem = document.getElementById("str"); // 查找元素
    elem.innerHTML = x + " " + y;           // 显示 x 和 y
    y = 7;    // 设置 y 为 7

</script>

2. 冒泡和捕获

事件传递定义了元素事件触发的顺序。 将 <p> 元素插入到 <div> 元素中,用户点击 <p> 元素, 哪个元素的 "click" 事件先被触发呢?
在 冒泡 中,内部元素的事件会先被触发,然后再触发外部元素,即: <p> 元素的点击事件先触发,然后会触发 <div> 元素的点击事件。
在 捕获 中,外部元素的事件会先被触发,然后才会触发内部元素的事件,即: <div> 元素的点击事件先触发 ,然后再触发 <p> 元素的点击事件。
addEventListener() 方法可以指定 "useCapture" 参数来设置传递类型:
addEventListener(event, function, useCapture);

3. 原型对象prototype

<script>
    function Person(first, last) {
      this.firstName = first;
      this.lastName = last;
    }
    //如果想已存在的对象中添加新的属性是不行的
    Person.age = 18;

    var myFather = new Person("John", "Doe");
    alert(myFather.firstName + ' ' +  myFather.age);//John undefined


    //基于上面的需求可以这样做
    Person.prototype.country = "China";
    alert(myFather.firstName + ' ' +  myFather.country);//John China
</script>

4. 闭包的用处

4.1 不好的方法,因为这个var count 在全局范围内,可能会在其它地方被修改

<script>
    var count = 0;
    function addCount(){
        return count += 1;
    }
    alert(addCount());//1
    alert(addCount());//2
    alert(addCount());//3
</script>

4.2 如果放到内部,不是理想中的情况

<script>
    function addCount(){
        var count = 0;
        return count += 1;
    }
    alert(addCount());//1
    alert(addCount());//1
    alert(addCount());//1
</script>

4.3 利用闭包,完美方案,注意这个adder的写法

<script>
    var adder = (function addCount(){
        var count = 0;
        return function (){return count += 1};
    })();

    alert(adder());
    alert(adder());
    alert(adder());
</script>

相关文章

  • React-Native 随笔

    学习基础: js的基础知识, rect.js基础 JSX语法基础 FlexBox布局 安装 安装node.js下载...

  • 最新web前端相关课程学习链接

    js基础篇 js进阶篇 js高级篇 vue基础篇 vue高级篇 react基础 react高级 Nodejs基础 ...

  • web前端 -- Day23 js高级

    js基础 JavaScript简称:JS JS分三个部分: ECMAScript标准---基础的语法 DOM D...

  • 前端JavaScript面试技巧

    1-1 课程概述 要做什么?——讲解前端 JS 基础面试题 哪些部分?——JS 基础,JS-WEB-API,JS ...

  • 4/07day28_js基础

    day28_js基础 回顾 JS基础语法 JS运算符 JS流程控制语句 条件语句 JS的条件语句和Java语法基本...

  • 2018-12-20

    1.01.尚硅谷_JS基础_JS简介(1) 10.10.尚硅谷_JS基础_Null和Undefined(10) 1...

  • JS基础和WebAPIs的关联性

    学习ECMAscript标准规定的基本语法掌握JS基础语法只学习JS基础做不了网页交互效果学习JS基础语法是为了后...

  • 2019-07-27 前端面试题

    1.js的基础类型 js的基础类型包括 Undefined , Null , String ,Number ,...

  • 网络编程(十九) JavaScript(9)

    一、 JS的组成 1.1 JS基础阶段以及Web APIs阶段 【1】JS基础阶段 我们学习的生死ECMAScri...

  • 发现•分享—2019-01-17

    文章 JS JS 异步编程六种方案 JS基础—原型对象的那些事(一) JS基础—原型对象的那些事(二) CSS 综...

网友评论

      本文标题:JS基础

      本文链接:https://www.haomeiwen.com/subject/nfvukltx.html