js中的定义
执行环境:执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为,每个执行环境都有一个与之关联的 变量对象:环境中定义的所有变量和函数都保存在这个对象中。(在函数中这个变量对象叫活动对象)
作用域链:当代码在一个环境中执行时,会创建变量对象的一个作用域链,作用域链的用途是保证对执行环境有权访问的所有变量和函数的有序访问。
作用域链本质上是一个指向变量对象的指针列表,他只引用但不实际包含变量对象。
闭包中所保存的是整个变量对象而不是某个特殊的变量
闭包是指有权访问另一个函数作用域中的变量的函数。
this对象是在运行时基于函数的执行环境绑定的,在全局环境中this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象,匿名函数的执行环境具有全局性,因此其this对象通常指向window.
function hehe(){
return funciton(){
return "name";
}
}
document的DOMContentLoaded事件会在形成完整的dom树之后触发,不理会图像,js文件,css文件或其他资源是否已经下载完毕,也就意味着用户能够尽早的与页面交互。这个事件始终都会在load事件之前触发
在ajax应用中开发人员经常要利用url参数列表来保存状态或导航信息;
在js中添加到页面上的事件处理程序的数量将直接关系到页面的整体运行性能,导致这一问题的原因是多方面的,首先每个函数都是对象,都会占用内存,内存中对象越多性能就越差,其次,必须事件指定所有事件处理程序而导致的dom访问次数,会延迟整个页面的交互就绪事件,
使用事件委托,只需要在dom树中尽量最高的层次上添加一个事件处理程序.多数鼠标事件和键盘事件都适合采用事件委托技术.
在不需要的时候移除时间处理程序.
在事件处理程序中删除按钮也能组织事件冒泡,目标元素在文档中是事件冒泡的前提.
以前面试的时候有人让我理解一下dom是什么?
DOM 文档对象模型,是针对hmtl和xml文档的一个api,dom描绘了一个层次化的节点数,允许开发人员添加,移除和修改页面的某一部分.
大多数情况下都将事件处理程序添加事件流的冒泡阶段,要保证处理事件的代码能在大多数浏览器下一致的运行,只需要关注冒泡阶段
事件对象:在出发dom上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与时间有关的信息,包括导致事件的元素,事件的类型以及其他与特定时间相关的信息.
新图像元素不一定要从添加到文档后才开始下载只要设置了src属性就会开始下载;
mouseenter:当鼠标光标从元素外部首次移动到元素范围之内时触发;这个事件不冒泡,而且在光标移动到后代元素上不会触发
mouseleave:在位于元素上方的鼠标光标移动到元素范围之外时触发,----同上---
js中的定义的更多相关文章
- JS中函数定义和使用顺序
在js中如果定义函数是先声明函数,如: console.log(hello); //然后再去定义: function hello(){ alert("Hello");} 这种是可以 ...
- js中的定义变量之①用不用var
var 是js定义变量的意思. 由于js中的变量是弱类型的,因此js中的所有变量包括number(数字型).string(字符串类型).boolean(布尔类型,true和false)等均通过var关 ...
- [转载]JS中如何定义全局变量
三种方法 1.在js的function外定义一个变量 var name='测试'; function XX(){ alert(name); } 2.不使用var,直接给定义变量,隐式的声 ...
- JS中如何定义全局变量
三种方法 1.在js的function外定义一个变量 var name='测试'; function XX(){ alert(name); } 2.不使用var,直接给定义变量,隐式的声 ...
- Angular JS中变量定义的基本原则
在Angular JS开发中,经常需要定义一些变量,关于这些变量的定义方法及作用域应该注意以下几点: 1. 如果能用局部变量解决问题,尽量不要用全局变量. 2. 需要与界面双向绑定的变量采用$scop ...
- 1.1 js中函数定义解析(学习笔记)
1.1.1函数的分类 函数声明式 :使用function声明函数,并指定函数名. 函数表达式:使用function声明函数,但未指定函数名. 函数表达式2.匿名函数,匿名函数有很多作用,赋予一个变量则 ...
- JS中函数定义和函数表达式的区别
摘要: (function() {})();和(function(){}());的区别 Javascript中有2个语法都与function关键字有关,分别是: 函数定义:function Funct ...
- js 中const 定义的值是否能更改
const定义的基本类型不能改变,但是定义的对象是可以通过修改对象属性等方法来改变的. 1. const aa=trueaa=falseconsole.log(aa)VM1089:2 Uncaught ...
- 简单说明一下JS中的函数声明存在的“先使用,后定义”
首先看一段JS代码,其中使用了两种方式声明了两个函数,分别在不同的地方调用两个函数: <script> 'use strict'; // 输出hello函数 console.log(hel ...
随机推荐
- python操作mysql数据库
连接数据库 输入值 存入数据库 关闭 import string import mysql.connector conn=mysql.connector.connect(user='root',pas ...
- 删除ubuntu后无法进入windows
一天,脑袋一热想装个ubuntu学习学习,结果装的ubuntu版本比较老,没有集成我笔记本的网卡驱动,在ubuntu下上不了网,心想上不了网学习起来不是很不方便,于是就直接在win7下将ubuntu的 ...
- hihoCoder #1199 : Tower Defense Game ——(树型dp)
题目链接:https://hihocoder.com/problemset/problem/1199. 题意:一棵以1为根的树,每个点有一个p值和q值,到这个点需要当前分数大于等于p,然后消耗掉(p- ...
- Linuxmint&win7
一.选择好Linux发行版,并下载ISO镜像.Linux发行版众多,然而主流的无非Linuxmint.Ubuntu.Fedora.Debian等,当然国内的Deepin也不错.小编旧文已专门就&quo ...
- Halcon学习之tuple
* define a tuple for int, double, string... not for object d:=[] * assignment d[0] := 'a string' * g ...
- (转)不停止Nginx服务的情况下平滑变更Nginx配置
在不停止Nginx服务的情况下平滑变更Nginx配置 1.修改/usr/local/webserver/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确: /u ...
- PowerDesginer 生成的Oracle 11g 组合触发器代码编译错误(29): PLS-00103
问题描述: 采用PowerDesigner15针对Oracle 11g 创建物理数据模型,想实现一个字段的自增,采用如下步骤: 1.创建序列,命名为Sequence_1; 2.在自增字段编辑窗口中,选 ...
- mysql - join two derived tables
select t1.uid from (select uid from table1) t1 inner join (select uid from table2) t2 where t1.uid=t ...
- C3属性的轮播图(持续更新)
天气好冷,都不想写代码.就先写个没有焦点的轮播图,过两天在补全. 用的是CSS3的属性 过渡transition 和 转换 transfrom:translateX() 只做了轮播和 鼠标进入停止轮播 ...
- sqlite的增删改查
// 基本步骤 // 1. 打开数据库 // 2. 处理数据 // 3. 关闭数据库 //先设置全局变量 lazy var documentsPath: String = { let paths = ...