var函数

JavaScript基础2——关于变量

可紊 提交于 2020-01-14 18:42:40
变量的声明 变量的定义:使用var关键字来声明,区分大小写的。 注意 :不用var,会污染全局变量 。 变量的命名规范是:字母,数字,$符和下划线构成,但是不可以以数字开始,并且变量名不可以使用关键字。 1、声明变量 1 <script type="text/javascript"> 2 var i=123;//使用var关键字声明变量 3 var s="Jackie"; 4 temp="直接赋值使用变量";//如果您所赋值的变量还未进行过声明,该变量会自动声明。 5 document.write(i+" "+s+" "+temp); 6 </script> 2、重新声明变量 1 <script type="text/javascript"> 2 var i=123;//使用var关键字声明变量 3 var i;//在重新声明该变量后,变量的值不会被重置或清除。 4 document.write("i的值是:"+i);//i的值还是123 5 </script> 3、 命名习惯 变量命名都以类型前缀+有意义的单词组成,用驼峰式命名法增加变量和函式的可读性。例如:sUserName,nCount。 前缀规范: 每个局部变量都需要有一个类型前缀,按照类型可以分为: 1 2 3 4 5 6 7 8 s:表示字符串。例如:sName,sHtml; n:表示数字。例如:nPage

早该知道的7个JavaScript技巧

て烟熏妆下的殇ゞ 提交于 2020-01-14 17:31:46
我写JavaScript代码已经很久了,都记不起是什么年代开始的了。对于JavaScript这种语言近几年所取得的成就,我感到非常的兴奋;我很幸运也是这些成就的获益者。我写了不少的文章,章节,还有一本专门讨论它的书,然而,我现在依然能发现一些关于这种语言的新知识。下面的描述的就是过去让我不由得发出“啊!”的感叹的编程技巧,这些技巧你应该现在就试试,而不是等着未来的某个时候偶然的发现它们。 简洁写法 JavaScript里我最喜欢的一种东西就是生成对象和数组的简写方法。 在过去,如果你想创建一个对象,你需要这样: 1 var car = new Object(); 2 car.colour = 'red' ; 3 car.wheels = 4; 4 car.hubcaps = 'spinning' ; 5 car.age = 4; 下面的写法能够达到同样的效果: 1 var car = { 2 colour: 'red' , 3 wheels:4, 4 hubcaps: 'spinning' , 5 age:4 6 } 简单多了,你不需要反复使用这个对象的名称。 这样 car 就定义好了,也许你会遇到 invalidUserInSession 的问题,这只有你在使用IE时会碰到,只要记住一点,不要右大括号前面写分号,你就不会有麻烦。 另外一个十分方便的简写是针对数组的。

DeBug Python神级工具PySnooper

别等时光非礼了梦想. 提交于 2020-01-14 11:30:56
安装 pip3 install pysnooper import pysnooper @pysnooper.snoop() def number_to_bits(number): if number: bits = [] while number: number, remainder = divmod(number, 2) bits.insert(0, remainder) return bits else: return [0] number_to_bits(6) 返回日志 Starting var:.. number = 6 21:14:32.099769 call 3 @pysnooper.snoop() 21:14:32.099769 line 5 if number: 21:14:32.099769 line 6 bits = [] New var:....... bits = [] 21:14:32.099769 line 7 while number: 21:14:32.099769 line 8 number, remainder = divmod(number, 2) New var:....... remainder = 0 Modified var:.. number = 3 21:14:32.099769 line 9 bits.insert(0,

JS 之 引擎运行原理

一个人想着一个人 提交于 2020-01-14 11:06:13
今天跟大家分享下JS 之 引擎运行原理的知识。 1 一些名词 JS引擎 — 一个读取代码并运行的引擎,没有单一的“JS引擎”;,每个浏览器都有自己的引擎,如谷歌有V。 作用域 — 可以从中访问变量的“区域”。 词法作用域— 在词法阶段的作用域,换句话说,词法作用域是由你在写代码时将变量和块作用域写在哪里来决定的,因此当词法分析器处理代码时会保持作用域不变。 块作用域 — 由花括号{}创建的范围 作用域链 — 函数可以上升到它的外部环境(词法上)来搜索一个变量,它可以一直向上查找,直到它到达全局作用域。 同步 — 一次执行一件事, “同步”引擎一次只执行一行,JavaScript是同步的。 异步 — 同时做多个事,JS通过浏览器API模拟异步行为 事件循环(Event Loop) - 浏览器API完成函数调用的过程,将回调函数推送到回调队列(callback queue),然后当堆栈为空时,它将回调函数推送到调用堆栈。 堆栈 —一种数据结构,只能将元素推入并弹出顶部元素。 想想堆叠一个字形的塔楼; 你不能删除中间块,后进先出。 堆 — 变量存储在内存中。 调用堆栈 — 函数调用的队列,它实现了堆栈数据类型,这意味着一次可以运行一个函数。调用函数将其推入堆栈并从函数返回将其弹出堆栈。 执行上下文 — 当函数放入到调用堆栈时由JS创建的环境。 闭包 — 当在另一个函数内创建一个函数时,它

filter函数(JS)

我与影子孤独终老i 提交于 2020-01-14 03:34:27
filter函数 filter也是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。 和map()类似,Array的filter()也接收一个函数。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。 例如,在一个Array中,删掉偶数,只保留奇数,可以这么写: var arr = [1, 2, 4, 5, 6, 9, 10, 15]; var r = arr.filter(function (x) { return x % 2 !== 0; }); r; // [1, 5, 9, 15] 把一个Array中的空字符串删掉,可以这么写: var arr = ['A', '', 'B', null, undefined, 'C', ' ']; var r = arr.filter(function (s) { return s && s.trim(); // 注意:IE9以下的版本没有trim()方法 }); arr; // ['A', 'B', 'C'] 可见用filter()这个高阶函数,关键在于正确实现一个“筛选”函数。 回调函数 filter()接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数,表示Array的某个元素。回调函数还可以接收另外两个参数

javascript中的this

狂风中的少年 提交于 2020-01-13 20:57:33
this是Javascript语言的一个关键字。 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。 函数在不同的执行环境中this的值也跟着不同。 分一下四种 方法调用模式。 当函数作为对象的方法调用时,this指向该对象 var num1=0; var obj={}; obj.num1=1; obj.func=function(){ return this.num1; } alert(obj.func());//1    普通的函数调用模式 当函数直接调用时,this指向全局对象window。 var num1=0; var func=function(){ return this.num1; } alert(func())//0    当函数内部的函数用普通调用方式调用时,this仍指向全局对象window。 var num1=0 var obj={}; obj.num1=1; obj.func1=function(){ var num1=2; var that=this; var func2=function(){ alert(this.num1);//0 alert(that.num1);//1 alert(num1);//2 } func2(); } obj.func1();    构造器调用模式,即使用new关键词 当使用new方式调用函数时

数组去重

做~自己de王妃 提交于 2020-01-13 20:06:25
数组去重就是将一个数组中的相同的元素删除,只保留其中的一个。这里的相同,其实是一个陷阱,有好多同学认为值相等即为相同,而忽略了类型的判断。 下面介绍13种原生方式实现数组去重,当中涉及ES6,ES5两种标准,has,Map,filter,reduce,call,apply,set,push,from,indexOf,sort等函数,及函数式编程,原型函数,构造函数等概念。 一、对象键值对解法 解法1 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>对象键值对去重,适用于数组或者数组对象</title> </head> <body> 未区分数字和字符串,耗时13ms,超级快。 <script type="text/javascript"> function removeSame(arr) { // 构建一个新数组,存放结果 var newArray = []; //创建一个空对象 var object = {}; // for循环时,每次取出一个元素与对象进行对比 // 如果这个对象不重复,将它存放到结果数中 // 同时把这个元素的内容作为对象的一个属性,并赋值为true,存到对象中 for (var i = 0; i

前端代码规范

岁酱吖の 提交于 2020-01-13 18:12:45
编写可维护代码,就需要有一定的代码规范。 基本命名规范 变量名应为名词,eg: car,person 函数名以动词开始。 getName(), 返回类型是布尔类型,一般以is开头,eg: isEnable(); 变量和函数命名,不要担心长度,合乎逻辑重要。 变量命名 -- 类型透明 通过初始化指定变量类型 var found = false; // 布尔类型 var count = -1; // 数字类型 var name = “”; // 字符串 var person = null; // 对象 匈牙利标记法 变量名前面加上一个或者多个字符来表示数据类型。 "o" =>变量 var oPerson; "s" => 字符串 var iCount “i” => 整数 var sName; “f” => 浮点数 var fMath; “b” => 布尔值 var bFound; 全局命名空间 创建唯一的全局的对象,然后再把需要的变量和函数添加到对象上。 避免与其他功能冲突。 产生对应的作用域 // 声明全局对象 var Wrox = {}; // 为Wrox 创建 Professional JavaScript 命名空间 Wrox.ProJS = {}; // 分别在添加各种事件 Wrox.ProJS.EventUtil = {}; Wrox.ProJS.CookieUtil = {}

Js动画(一)基础

為{幸葍}努か 提交于 2020-01-13 13:29:56
  在 再谈js拖拽(二)仿iGoogle自定义首页模块拖拽 的最后,我说了接下来要写Js动画,转瞬拖到了今天,呵呵。这篇主要讲动画的基础,就是几个最基本的特效,即:移动,渐变和尺寸变化。接下来写个梦幻西游版逍遥生角色行走的动画,然后再适时的写些动画有关的例子,争取把这个系列写好。   我们玩魔兽世界的时候可以通过ctrl+r来查看当前的帧数,当帧数很小时,会觉得很卡,帧数很高则很流畅。所谓帧数就是1秒内显示图片的数量。当这么多帧图片连起来显示,就形成了动画。   Js中实现动画都是靠setInterval或者setTimeout来实现。setInterval自身就能不断循环来执行计算从而显示新的帧,setTimeout是间隔一段时间后仅执行一次,他需要配合函数循环实现,很多人偏爱setTimeout来实现。本文采用setInterval实现。   据说,普通人眼能看到1/24秒,就是说1秒至少24帧,每次移位间隔需要小于1000/24=41.7毫秒,也就说setInterval要每隔至少40毫秒执行一次,一般地,我们采用10毫秒,当然间隔时间越短,客户端执行计算次数就越多,如果你code计算量大则可以适当调长些。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR

数字大写转换

强颜欢笑 提交于 2020-01-13 12:54:45
主函数 function DX(n) { if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n)) return "数据非法"; var unit = "千百拾亿千百拾万千百拾元角分", str = ""; n += "00"; var p = n.indexOf('.'); if (p >= 0) n = n.substring(0, p) + n.substr(p + 1, 2); unit = unit.substr(unit.length - n.length); for (var i = 0; i < n.length; i++) str += '零壹贰叁肆伍陆柒捌玖'.charAt(n.charAt(i)) + unit.charAt(i); return str.replace(/零(千|百|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元整"); } 调用函数 <script> //alert(DX(<%=mTotalAmount %>)); document.getElementById("Text2").value = DX(<