js

js变量和作用域

◇◆丶佛笑我妖孽 提交于 2020-02-07 00:39:23
js变量和作用域 (一)js变量 1. 变量数据类型和堆栈 1.1 数据类型 1.2 堆栈 2. 变量值的比较 3. 参数的传递 4. 类型检测 4.1 typeof 4.1 instanceof (二)js变量的作用域与解析 1. 变量对象及作用域链 2. js解析机制 2.1 预解析 2.2 解析冲突 2.3 逐行解析 (一)js变量 1. 变量数据类型和堆栈 1.1 数据类型 基本数据类型 数字 字符串 布尔值 undefined null 基本数据类型的值不能被修改,其值保存在栈中,当变量赋予新的值,栈中的值被覆盖 引用数据类型 对象 数组 引用数据类型的值可以被修改,其地址保存在栈中,值保存在堆中 1.2 堆栈 栈 堆 基本数据类型 a 值 引用数据类型 b 地址1 地址1 { } c 地址2 地址2 { } 2. 变量值的比较 基本数据类型 由于其值保存在栈中,每次比较都是栈中的值进行比较 引用数据类型 其地址保存在栈中,每次比较进行的都是栈中地址的比较,从堆栈表格中就可以看出,两个相同的对象,其保存在栈中的地址是不相同的 var a = { } , b = { } ; console . log ( a === b ) ; //得出结果为flase 总结:js中变量的比较是保存在栈中内容的比较 3. 参数的传递 基本数据类型 参数复制定义变量的值后进行传递 var a

JS异步顺序执行

拜拜、爱过 提交于 2020-02-06 23:35:36
因为工作的需要,我要在网页端编写一段脚本,把数据通过网页批量提交到系统中去。所以我就想到了Greasemonkey插件,于是就开始动手写,发现问题解决得很顺利。但是在对脚本进行总结和整理的时候,我习惯性地问了自己一个问题:能不能再简单点? 我的答案当然是“能”。 首先回顾我的数据批量提交的需求:我有一批用户数据要插入到系统中,但是因为系统库表结构不是行列式的,所以无法转化为sql语句插入。要插入的数据有接近200条,就是傻呵呵地手工录入到系统,估计也要1天的时间。作为程序员,当然不会干这么傻的事情,我一定要用程序来解决。这个编程的过程耗费了我1天的时间。相比手工录入,我额外收入是这篇博文,绝对的合算! 编程平台选择没花费时间,直接选定基于Greasemonkey写自己的脚本,浏览器当然是firefox了。脚本的工作过程: 在脚本中预先存放要插入的数据 模拟鼠标点击,打开页面中的输入窗口 将数据录入到输入窗口,并模拟点击“提交”按钮,将数据提交到系统中。 依次循环,直到所有数据都处理完毕。 这里的技术难点在于: 打开输入窗口,需要等待不定期的时间,视网络情况而定。 提交数据到后台,需要等待处理完毕之后才可以循环下一个数据。 如果我是菜鸟的话,我当然直接写一个类似这样的应用逻辑: for(var i = 0; i < dataArray.length; ++i) { 3:

【JavaScript】整体学习笔记

天涯浪子 提交于 2020-02-06 23:19:42
JavaScript简介 JavaScript简称js,为方便起见,以下说明均使用简称。 js是一门Web编程语言,用于编写Web程序。它是解释型语言,它的解释器被称为JavaScript引擎,是浏览器的一部分,因此所有浏览器都支持js。几乎每一个Web页面都包含了html、css 和 js,css和js依托于html起作用。html 定义了网页的内容,css 描述了网页的布局,js 主导了网页的行为。 JavaScript用法 HTML中的 js 语句必须位于 script 标签之间,而 script 标签一般放在 head 标签之间: <html> <head> <script> // 此处可书写 js 语句 </script> </head> <body> </body> </html> 这种写法也有缺点:当 js 语句很多时,不容易维护。我们也可以采用引用 js 文件的方式: <html> <head> <script src="js/test.js"></script> </head> <body> </body> </html> JavaScript语法 语法定义了语言结构。js 的语言结构包括:数据类型、字面量、变量、操作符、函数等。 字面量:一般固定值称为字面量。如:3.14、“test”、5 + 6、[1, 2, 3]、{firstName:“John”,

js中去除两端逗号

佐手、 提交于 2020-02-06 23:02:25
js中去除两端逗号 1.js replace(a,b)之替换字符串中所有指定字符的方法 1 2 3 4 5 6 7 8 9 10 var str = 'abcadeacf' ; var str1 = str.replace( 'a' , 'o' ); alert(str1); // 打印结果: obcadeacf var str2 = str.replace(/a/g, 'o' ); alert(str2); //打印结果: obcodeocf, 注意: 此处replace的第一个参数为正则表达式,/g是全文匹配标识。 2. JS四种方法去除字符串最后的逗号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 <script> window.onload= function () { var obj = {name: "xxx" , age: 30, sex: "female" }; //定义一个object对象 var str = '' //定义一个空字符用来接收对象里的key或者value for ( var item in obj) { //遍历item变量里的对象的属性和元素, str += obj[item] + "," //将obj对象的值遍历出来,并且追加到str字符中。 //str +=

js中的内部属性与delete操作符

瘦欲@ 提交于 2020-02-06 22:45:10
本文正式地址: http://www.xiabingbao.com/javascript/2015/08/03/javascript-delete-configurable 在讲解 Configurable 之前,我们首先来看一道面试题: a = 1; console.log( window.a ); // 1 console.log( delete window.a ); // true console.log( window.a ); // undefined var b = 2; console.log( window.b ); // 2 console.log( delete window.b ); // false console.log( window.b ); // 2 从上面的这道题可以看出两个的区别:在没有使用var声明变量时,使用delete关键词是可以进行删除的,再次获取时值就是undefined了;在使用var声明的变量,使用delete是不能删除的,再获取时值依然是2。 1. delete操作符 使用delete删除变量或属性时,删除成功返回true,否则返回false。如上面的例子中,delete无法删除变量a时,则返回false;而delete能成功删除变量b,则返回true。 除了上述的两种情况,还有其他的各种常用变量也有能被delete删除的

JS DOM创建节点

不打扰是莪最后的温柔 提交于 2020-02-06 19:55:36
DOM节点操作之增删改查 document.write() 可以向文档中添加节点 但是有个致命问题,会把文档原有的节点全部清空 因此不推荐使用 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> body{ width:100%; height:100%; } </style> <script src="DomReady.js"></script> </head> <body> 这是原有的节点哦~ <script> myReady(function(){ document.write("这是document.write创建的节点!"); }); </script> </body> </html> create系列方法: document.createElement 创建元素节点 document.createTextNode 创建文本节点 document.createComment 创建注释节点 document.createDocumentFragment 创建文档片段节点 .appendChild() 追加子元素 document.body.insertBefore(要插入的节点,插入的位置); 在指定位置前插入节点 .firstChild

js中的继承方式

守給你的承諾、 提交于 2020-02-06 19:54:20
一、原型链继承 // 父类型 function Father(name){ this.name = name; } Father.prototype.showFatherName = function(){ console.log(this.name); }; // 子类型 function Child(name){ this.name = name; } Child.prototype= new Father(); // 原型链继承 var c = new Child("jyy"); c.showFatherName();   实际中很少会单独使用原型链继承。     缺点:     1. 父类型的实例属性会变为子类型的原型属性     2. 无法向夫类型的构造函数中传递参数。 二、借用构造函数 function Father(){ this.name = "jyy";}Father.prototype.display = function(){ console.log(this.name);};function Child(){ Father.call(this);}var c1 = new Child();console.log(c1.name);c1.display(); // error   缺点:无法解决函数复用性的问题 三、组合式继承  

关于js中splice方法返回的结果

妖精的绣舞 提交于 2020-02-06 18:28:21
一、前言   刚刚在使用splice()方法,发现这个方法返回的是删除后的数组元素,如果要获取删除指定元素后的数组,直接调用原来的数组即可!因为splice()会改变原来数组!之前对splice()方法一直不熟悉,写个随笔记录一下。 官方说明: 二、定义和用法   splice() 方法向/从数组中添加/删除项目,然后 返回被删除的项目 。   注意:该方法会改变原始数组。 三、语法   arrayObject.splice(index,howmany,item1,.....,itemX) 参数 描述 index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置 howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。 item1...itemX 可选。向数组添加的新项目。   例子1: var arr = [1,2,3,4] console.log(arr.splice(1,1));//[2] console.log(arr);//[1,3,4]    结果:    [2] [1,3,4] 解析:splice()删除指定元素后返回被删除的元素。而该方法作用在arr数组上,所以原来的数组也被改变,变成[1,3,4].我们可以根据需要选择相应的结果. 最后附上和splice相似的方法:slice 四、slice     定义:slice()

《JavaScript》JS中的常用方法attr(),splice()

孤街浪徒 提交于 2020-02-06 18:24:34
1、jquery中用attr()方法来获取和设置元素属性,attr是attribute(属性)的缩写,在jQuery DOM操作中会经常用到attr(),attr()有4个表达式。   attr( 属性名 ) //获取属性的值(取得第一个匹配元素的属性值。通过这个方法可以方便地从第一个匹配元素中获取一个属性的值。如果元素没有相应属性,则返回 undefined   attr( 属性名, 属性值 ) //设置属性的值 (为所有匹配的元素设置一个属性值。)   attr( 属性名 , 函数值 ) //设置属性的函数值 (为所有匹配的元素设置一个计算的属性值。不提供值,而是提供一个函数,由这个函数计算的值作为属性值。)   attr(properties) //给指定元素设置多个属性值,即:{属性名一: “属性值一” , 属性名二: “属性值二” , … … }。(这是一种在所有匹配元素中批量设置很多属性的最佳方式。 注意,如果你要设置对象的class属性,你必须使用'className' 作为属性名。或者你可以直接使用'class'或者'id'。) 2、数组常用到的方法 array .splice( index , howmany , item1 ,....., itemX ) 来源: https://www.cnblogs.com/-beauTiFul/p/6741835.html

js动态添加对象

末鹿安然 提交于 2020-02-06 18:22:45
js的数组,字符串,对象操作是实现一些功能不可缺少的部分。 一般情况下js的数组和字符串动态加起来比较方便,都有自己提供的方法,数组的push(),字符串直接用加号等。但是js对象动态添加就需要一点工作了 下面我写了两种动态添加对象的方法 第一种 function toObj1(key,val){ var data = {}; data[key] = val; return data; } var obj1 = toObj1('name','nurdun'); console.log(obj1); 第二种 function toObj2(key,val){ var data = {[key]:val}; return data; } var obj2 = toObj2('name','nurdun'); console.log(obj2); 下面是这两种方法的应用 先设置两个数组,一个代表key,一个代表val var keyArr= ["name","age","job"] var valArr = ["nurdun",3,"front-end"] 下面是两种动态添加对象的运用 function fn(keyArr,valArr){ var data = {}; for(i = 0;i<keyArr.length;i++){ var key = keyArr[i]; var