var函数

JavaScript -- 闭包与作用域链

岁酱吖の 提交于 2020-03-06 01:38:34
什么是闭包 红宝书上解释: 闭包 是指有权访问另外一个函数作用域中的变量的函数.闭包就是能够读取其他函数内部变量的函数 MDN 上解释: 闭包是由函数以及创建该函数的词法环境组合而成。这个环境包含了这个闭包创建时所能访问的所有局部变量。 要理解闭包必须先理解什么是作用域以及作用域链。 作用域及作用域链 作用域分为全局作用域和函数作用域,es6 后又引入了块级作用域的概念。 作用域在代码定义的时候就产生了且不会改变,全局变量作用在全局作用域中,而函数内声明的局部变量是在函数作用域中,外部作用域无法访问内部的函数作用域中的变量。 作用域作用: 限制变量的访问权限和访问顺序,隔离变量使不同作用域下的同名变量不会产生冲突。 作用域链: 访问变量时,先查找自身函数作用域内是否有该属性,没有再向外查找父级作用域中是否含有该属性,直到最外层全局作用域,直到即可以访问,没有则报错 ReferenceError,访问变量查找作用域的这个顺序及其层级关系称为作用域链,访问变量时是在作用域链中自下而上(由内到外)查找。 看下面两个作用域的例子: 例子1: var x = 10 function fn ( ) { console . log ( x ) } function show ( f ) { var x = 20 f ( ) //即调用函数 fn(),访问变量 x

记录遇到的Python陷阱和注意点

一个人想着一个人 提交于 2020-03-05 13:24:02
最近使用Python的过程中遇到了一些坑,例如用 datetime.datetime.now() 这个可变对象作为函数的默认参数,模块循环依赖等等。 在此记录一下,方便以后查询和补充。 避免可变对象作为默认参数 在使用函数的过程中,经常会涉及默认参数。在Python中,当使用可变对象作为默认参数的时候,就可能产生非预期的结果。 下面看一个例子: def append_item(a = 1, b = []): b.append(a) print b append_item(a=1) append_item(a=3) append_item(a=5) 结果为: [1] [1, 3] [1, 3, 5] 从结果中可以看到,当后面两次调用 append_item 函数的时候,函数参数b并没有被初始化为 [] ,而是保持了前面函数调用的值。 之所以得到这个结果,是因为在Python中, 一个函数参数的默认值,仅仅在该函数定义的时候,被初始化一次 。 下面看一个例子证明Python的这个特性: class Test(object): def __init__(self): print("Init Test") def arg_init(a, b = Test()): print(a) arg_init(1) arg_init(3) arg_init(5) 结果为: Init Test 1 3

数组排序的方法

元气小坏坏 提交于 2020-03-05 12:54:36
sort()对数组排序,不开辟新的内存,对原有数组元素进行调换 // 1、简单数组简单排序 .sort() // var arrSimple = [1,8,7,6,11] // function order(value1,value2){ // return value1-value2; // } // console.log( arrSimple.sort(order)) // 冒泡排序:两两比较,以升为例,一直比到最后一项 // splice() // 参数1:index:正数 删除的位置,负数从结尾开始算 // 参数2:必须,要删除的数量,设置为0不会删除项目 // 参数3:可选,向数组中添加新的项目 // var arr = [1,8,9,2,7,6] // function bubblesort(arr){ // for(var i=arr.length-1;i>0;i--){ // for(var j=0;j<i;j++){ // if(arr[j]>arr[j+1]){ // var temp = arr[j] // arr.splice(j,1,arr[j+1]) // arr.splice(j+1,1,temp) // } // } // } // return arr; // } // 选择排序:将当前未确定的模块中的max和min取出来插到最前面或者后面 //

开发中常用的数组操作方法讲解

拟墨画扇 提交于 2020-03-05 09:38:16
1、 concat() concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,仅会返回被连接数组的一个副本。 var arr1 = [1,2,3]; var arr2 = [4,5]; var arr3 = arr1.concat(arr2); console.log(arr1); //[1, 2, 3] console.log(arr3); //[1, 2, 3, 4, 5] 2、 join() join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的,默认使用’,‘号分割,不改变原数组。 var arr = [2,3,4]; console.log(arr.join()); //2,3,4 console.log(arr.join(’.’)); //[2.3.4] 3、 push() push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。末尾添加,返回的是长度,会改变原数组。 var a1 = [2,3,4]; var a2 = a1.push(5); console.log(a1); //[2,3,4,5] console.log(a2); //4 4、 pop() pop() 方法用于删除并返回数组的最后一个元素。返回最后一个元素,会改变原数组。 var arr = [2,3,4]; console.log

js ajax post 页面传值

强颜欢笑 提交于 2020-03-05 02:41:31
自己写的一个简单的js post ajax 页面传值 ajax一般处理程序相应代码 public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain"; string name = context.Request.Form["name"].ToString(); //获取Default.aspx post发送过来的数据 string pwd=context.Request.Form["pwd"].ToString(); //if (name == "admin" && pwd == "admin") { context.Response.Write("将进入支付页面"); context.Response.Cookies["username"].Value = name;//把获取到的数据保存到cookie里面,为的是方便另一个页面获取这个值 context.Response.Cookies["pwd"].Value = pwd; // } } Default.aspx 页面相应代码 //这个不用管,定死这么写,主要是为了清缓存 function createXMLHttp() { var XmlHttp; if (window.ActiveXObject) {

JavaScript

。_饼干妹妹 提交于 2020-03-05 00:18:55
JavaScript概述 ECMAScript和JavaScript的关系     1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。     该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因。一是商标,JavaScript本身已被Netscape注册为商标。二是想体现这门语言的制定者是ECMA,而不是Netscape,这样有利于保证这门语言的开发性和中立性。     因此ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。 ECMAScript的历史 年份 名称 描述 1997 ECMAScript 1 第一个版本 1998 ECMAScript 2 版本变更 1999 ECMAScript 3 添加正则表达式 添加try/catch ECMAScript 4 没有发布 2009 ECMAScript 5 添加"strict mode"严格模式 添加JSON支持 2011 ECMAScript 5.1 版本变更 2015

前端之javascript

心不动则不痛 提交于 2020-03-05 00:06:58
JavaScript 是属于网络的脚本语言! JavaScript 被数百万计的网页用来改进设计、验证表单、检测浏览器、创建cookies,以及更多的应用。 JavaScript 是因特网上最流行的脚本语言。 JavaScript 很容易使用!你一定会喜欢它的 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中),后将其改名ScriptEase(客户端执行的语言)。 Netscape(网景)接收Nombas的理念,( Brendan Eich) 在其Netscape Navigator 2.0产品中开发出一套livescript的脚本语言。Sun和Netscape共同完成,后改名叫JavaScript。 微软随后模仿在其IE3.0的产品中搭载了一个JavaScript的克隆版叫Jscript。 为了统一三家,ECMA( 欧洲计算机制造协会)定义了ECMA-262规范.国际标准化组织及国际电工委员会(ISO/IEC)也采纳 ECMAScript 作为标准(ISO/IEC-16262)。从此,Web 浏览器就开始努力(虽然有着不同的程度的成功和失败)将 ECMAScript 作为 JavaScript 实现的基础。 ECMA-262 是 JavaScript 标准的官方名称。 ECMAScript

Date() 日期对象---Javascript

徘徊边缘 提交于 2020-03-04 19:57:25
Date(): 日期对象 是一个构造函数,必须使用 new 来调用创建我们的日期对象 //创建日期对象 var date = new Date ( ) ; //没有参数的时候返回 系统时间 //常用的参数写法 数字型2020,1,02 或者是 字符串型 '2020-01-02 8:20:15' var date = new Date ( '2020-01-02 8:20:15' ) ; console . log ( date ) ; //格式化日期 var date = new Date ( ) ; console . log ( date . getFullYear ( ) ) ; //年 console . log ( date . getMonth ( ) ) ; //月 0-11 月份+1 console . log ( date . getDate ( ) ) ; //日 console . log ( date . getDay ( ) ) ; // 周几 周日==0 console . log ( date . getHours ( ) ) ; //时 console . log ( date . getMinutes ( ) ) ; //分 console . log ( date . getSeconds ( ) ) ; //秒 console . log (

JavaScript学习总结(七)——JavaScript函数(function)

心已入冬 提交于 2020-03-04 19:03:37
一、函数基本概念   为完成某一功能的程序指令(语句)的集合,称为函数。 二、JavaScript函数的分类   1、自定义函数(我们自己编写的函数),如:function funName(){}   2、系统函数(JavaScript自带的函数),如alert函数。 三、函数的调用方式   1、普通调用:functionName(实际参数...)   2、通过指向函数的变量去调用:       var myVar=函数名;       myVar(实际参数...); 四、函数返回值   1.当函数无明确返回值时,返回的值就是"undefined"。   2.当函数有返回值时,返回值是什么就返回什么。 函数测试代码: 1 <script type="text/javascript"> 2 var str="window.alert('孤傲苍狼');"; 3 eval(str);//eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。 4 /*自定义函数*/ 5 function test(str){ 6 alert(str); 7 } 8 window.alert(test);//输出test函数的定义 9 //函数的调用方式1 10 test("孤傲苍狼"); 11 //函数的调用方式2 12 var myFunction=test; 13

JavaScript之作用域与闭包详解

点点圈 提交于 2020-03-04 16:25:39
前言: JavaScript是一种应用非常广泛的语言,其也有一些自身特点和优势,本文重在讲述其作用域机制以及闭包,会从一些实例来探讨其机理。 作用域在JavaScript程序员日常使用中有不同的含义,如下所示: this绑定的值; this绑定的值定义的执行上下文; 一个变量的“生命周期”; 变量的值解析方案,或词法绑定。 下面将讲诉JavaScript作用域概念,由此引出变量值解析方案的一般想法,最后再探讨JavaScript里闭包这一重要知识点。 1.全局作用域 所有浏览器都支持 window 对象,它表示浏览器窗口,JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。所以,全局变量是 window 对象的属性,全局函数是 window 对象的方法,甚至 HTML DOM 的 document 也是 window 对象的属性之一。 全局变量是JavaScript里生命周期(一个变量多长时间内保持一定的值)最长的变量,其将跨越整个程序,可以被程序中的任何函数方法访问。 在全局下声明的变量都会在window对象下,都在全局作用域中,我们可以通过window对象访问,也可以直接访问。 1 var name = "jeri"; 2 console.log(window.name); // 输出:jeri 3 console.log(name); // 输出