zoukankan      html  css  js  c++  java
  • js

    
    
    js引擎:js解释器,为浏览器的一部分,没有单一的“JS引擎”;每个浏览器都有自己的引擎
     

    作用域 — 可以从中访问变量的“区域”。

    词法作用域— 在词法阶段的作用域,换句话说,词法作用域是由你在写代码时将变量和块作用域写在哪里来决定的,因此当词法分析器处理代码时会保持作用域不变。

    块作用域 — 由花括号{}创建的范围

    作用域链 — 函数可以上升到它的外部环境(词法上)来搜索一个变量,它可以一直向上查找,直到它到达全局作用域。

    同步 — 一次执行一件事, “同步”引擎一次只执行一行,JavaScript是同步的。

    异步 — 同时做多个事,JS通过浏览器API模拟异步行为

    事件循环(Event Loop) - 浏览器API完成函数调用的过程,将回调函数推送到回调队列(callback queue),然后当堆栈为空时,它将回调函数推送到调用堆栈。

    堆栈 —一种数据结构,只能将元素推入并弹出顶部元素。 想想堆叠一个字形的塔楼; 你不能删除中间块,后进先出。

    堆 — 变量存储在内存中。

    调用堆栈 — 函数调用的队列,它实现了堆栈数据类型,这意味着一次可以运行一个函数。 调用函数将其推入堆栈并从函数返回将其弹出堆栈。

    执行上下文 — 当函数放入到调用堆栈时由JS创建的环境。

    闭包 — 当在另一个函数内创建一个函数时,它“记住”它在以后调用时创建的环境。

    垃圾收集 — 当内存中的变量被自动删除时,因为它不再使用,引擎要处理掉它。

    变量的提升— 当变量内存没有赋值时会被提升到全局的顶部并设置为undefined

    this —由JavaScript为每个新的执行上下文自动创建的变量/关键字。

    =document.querySelector(".b")
    create_text_p=document.createTextNode("<p></p>")
    create_p=document.createElement("p")
    a.appendChild(create_text_p)
    a.appendChild(create_p)
    a.insertBefore(create_text_p,a.childNodes[0])
     
    b=document.querySelectorAll(".b")
    create_text_p=document.createTextNode("<p></p>")
    b[0].appendChild(create_text_p)
     
    appendChild参数必须是一个Node 对象,不能是字符串
    a.insertBefore(create_text_p,a.childNodes[0])  第一个参数是一个节点对象,第二个参数规定插入的位置
     
    document.getElementById("myList").replaceChild(newnode,oldnode);  //newnode,oldnode均为节点对象
     
    item.removeChild(item.childNodes[0])  参数为对象
     
     
     
    a=document.getElementsByClassName("pre")
    console.log(a[0].lastChild)  获取pre下最后一个子节点,包括文本节点
    console.log(a[0].firstChild)  获取pre下第一个子节点,包括文本节点
    console.log(a[0].childNodes)  获取pre下所有子节点,包括文本节点。
    console.log(a[0].children)  获取pre下所有子节点,不包括文本节点。
    

      

    数组
    array,splice()  //参数一为下标开始,参数二为删除的个数,参数三为插入到被删除位置的数据,返回被删除的元素,在原数组修改
    array,slice()  //参数一为下标开始,参数二为下标结束,返回截取的数组 ,不在原数组修改
     
      innerHTML
     innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML。
     
     
    获取元素dom
     
    console.log("getElementsByClassName",document.getElementsByClassName("child"))
    console.log("getElementById",document.getElementById("id"))      
    console.log("getElementsByTagName",document.getElementsByTagName("div" )) console.log("getElementsByName",document.getElementsByName("one")) console.log(document.querySelector("div")) console.log(document.querySelectorAll("div"))

      

     

    ECMAScript中重载的定义

    重载:就是根据参数,选择相同函数名而参数不同的函数

    ECMAScript第二个函数覆盖了第一个函数,不具备重载的功能
     
     

    arguments 对象(函数参数的集合)

     
     
    function box(){
    return arguments[0]+arguments[1]+arguments[2];
    }
    alert(box('haha','dianshi'),99);
    

      

    JavaScript 程序

    计算机程序是由计算机“执行”的一系列“指令”。

    在编程语言中,这些编程指令被称为语句。

    JavaScript 程序就是一系列的编程语句。

    注释:在 HTML 中,JavaScript 程序由 web 浏览器执行。

     

     

    var a,b,c

    a=b=c=1

     

     

    浏览器提示框

    <script>
    window.alert(5 + 6);
    </script>
    
    浏览器控制台
    <script>
    console.log(5 + 6);
    </script>
    

     

    字面量 :源代码中直接代表某个常数值的一种表达形式,又2称混合值,可以是数字,字符串等

    数字字面量:

    字符串字面量:“ll”

    数组字面量 数字var arr = [1,2,3];

    正则表达式字面量 var reg = /[a-z]/g;

    对象字面量:{}

    变量:源代码中可变的表示法 

    构造器函数:new Object()

     ----------------
        constructor
      ----------------
      举个栗子:
      var Student = function() {
        this.name = 'default';
        this.say = function() {
          console.log('say hello!');
        }
      }
      这里的say方法放在构造函数的内部是不妥的。对于可以重用的成员,建议放在原型链上,主要是因为它一直保存在内存中。
      所以可以改为:
      Student.prototype.say = function() {
        console.log('say hello!');
      }
    
      如果我们创建实例的时候,丢失new呢?
      var s1 = Student();
      console.log(window.name); //"default"
    
      缺少new关键字之后,对于Student内部的this便指向了全局对象。这是很糟糕的一件事。
      这也是为什么规定构造函数的首字符大写的原因。
    
    
    
    去new
      ---------------
        去掉new关键字
      ---------------
      function People() {
        if(!(this instanceof People)) {
          return new People();
        }
    
        this.name = "default";
      }
    
      我们还可以通过arguments.callee完成同样的效果,不过在ES5的"use strict"模式下被禁用了。
  • 相关阅读:
    HDU-2602-Bone Collector
    HDU-1171-Big Event in HDU
    javascript概要
    核桃的数量
    P3372 【模板】线段树 1
    P3373 【模板】线段树 2
    拿糖果
    第二点五个不高兴的小明
    树的直径
    1240. 完全二叉树的权值
  • 原文地址:https://www.cnblogs.com/chargeworld/p/11930264.html
Copyright © 2011-2022 走看看