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 ...
随机推荐
- string.Join()的用法
List<string> list = new List<string>(); list.Add("I"); list.Add("Love&quo ...
- vim 大全用法
vim中常用设置和操作: 在Linux系统下: 打开vi 文件: 0 数字0,跳转至行首 ^ 跳转至行第一个非空字符 $ 跳转至行尾 vim 括号匹配跳转操作: ctrl+] 跳转至函数或 ...
- Qt窗口的屏幕居中显示
QDesktopWidget *pDesk = QApplication::desktop(); login->move((pDesk->width() - login->width ...
- c++ 二维数组传递
c++ 二维数组传递 我们在传递二维数组时,对于新手来说,可能会存在某些问题,下面讲解几种传递方法 在讲解如何传递二维数组时,先看看如何动态new 二维数组 // 二维数组动态申请 int row , ...
- (转)UIWebView全部API学习
网上找的收藏一下 http://www.myexception.cn/web/1888974.html 最生僻的API做了下划线以及粗体的标注.百度上查了全是拷贝的同一份代码,而且只有代码没有解释,很 ...
- Debug模式,不能进入打断点的类,反而进入代理类里
有史以来,第一次,遇到这个问题, 设置好断点,Debug模式开启项目,,没有进入原来打好的断点类,反而,进入的是和断点类相同名字(但是图标不同)的一个类里, 不能真正的调试,调试变得很麻烦, 解决方案 ...
- linux下编译bib、tex生成pdf文件
实验: 在linux环境下,编译(英文)*.bib和*.tex文件,生成pdf文件. 环境: fedora 20(uname -a : Linux localhost.localdomain 3.19 ...
- java中的 FileWriter类 和 FileReader类的一些基本用法
1,FileWriter类(字符输出流类) |--用来写入字符文件的便捷类.此类的构造方法假定默认字符编码和默认字节缓冲区大小都是可接受的.要自己指定这些值,可以先在 FileOutputStream ...
- php js => splice 数组 插入 功能
php array_splice 手册详解 array_splice - 把数组中的一部分去掉并用其它值取代 参数 input 输入的数组. offset 如果 offset 为正,则从 i ...
- 利用matlab摄像机标定
(1)输入图像 "Image names"键 Matlab的图形窗口显示出20幅靶标图像 (2) 提取角点 "Extract grid corners"键. 输 ...