var

js/预解析

∥☆過路亽.° 提交于 2020-04-04 16:48:18
1、js引擎在执行js代码时,会先解析js代码然后再去执行js代码,在解析js代码时会将var声明的变量和function声明的函数提到当前作用域代码的顶部。 2、当var声明的变量名与function声明的函数名一样的时候,函数优先级更高   (1)案例一     console.log(f)     var f = 123;     function f(){console.log(456)}      解析过程:     var f;     function f(){console.log(456)} // 函数整体提升     console.log(f) // function f(){console.log(456)}     f = 123;   (2)案例二     console.log(f)      function f(){console.log(456)}     var f = 123;      解析过程:     function f(){console.log(456)} // 函数整体提升     var f;     console.log(f) // function f(){console.log(456)}     f = 123; 来源: https://www.cnblogs.com/cuishuangshuang/p

记忆函数

随声附和 提交于 2020-04-04 08:22:44
很久没写随笔了呀,因为看到记忆函数,确实搞懵逼了啊,实在是太菜了。 书本上给出的例子: var fibonacci = function (n) { return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2); }; for (var i = 0; i <= 10; i += 1) {   document.writeln('// ' + i + ': ' + fibonacci(i)); } // 0: 0 // 1: 1 // 2: 1 // 3: 2 // 4: 3 // 5: 5 // 6: 8 // 7: 13 // 8: 21 // 9: 34 // 10: 55 这样是可以工作的,但是它做了很多无谓的工作。 Fibonacci 函数被调用了 453 次。我们调用了 11 次,而它自身调用了 442 次去计算可能已经被刚计算过的值。如果我们让该函数具备记忆功能,就可以显著地减少它的运算量。 我们在一个名为 memo 的数组里保存我们的储存结果,储存结果可以隐藏在闭包中。当我们的函数被调用时,这个函数首先看是否已经知道计算的结果,如果已经知道,就立即返回这个储存结果。 var fibonacci = function() { var memo = [0, 1]; var fib = function(n) { //10 9

js-语言精粹-函数记忆

十年热恋 提交于 2020-04-04 07:59:52
函数可以将先前操作的结果记录在某个对象里,从而避免无谓的重复运算。这种优化方式被称为 记忆 (memoization)。JavaScript的对象和数组要实现这种优化是非常方便的。 比如说,我们想要一个递归函数来计算Fibonacci数列。一个Fib数字是之前两个Fib数字的和。最前面的两个数字是0和1。 var count=0; var fib=function(n){ count++; return n<2?n:fib(n-1)+fib(n-2); }; for(var i=0;i<=10;i++){ console.log(fib(i)) } //0 //1 //1 //2 //3 //5 //8 //13 //21 //34 //55 count //453 这样是可以工作的,但它做了很多无谓的工作,fib函数被调用了453次。如果我们让该函数具备记忆功能,就可以显著地减少运算量。 我们在一个名为memo的数组里保存我们的存储结果,存储结果可以隐藏在 闭包 中。当函数被调用时,这个函数首先检查结果是否已经存在,如果已经存在,就立刻返回这个结果。 var count=0; var fibonacci=function(){ var memo=[0,1]; var fib=function(n){ count++; var result=memo[n]; if(typeof

Delphi7文件操作常用函数

风格不统一 提交于 2020-04-04 01:12:55
1. AssignFile、Erase AssignFile procedure AssignFile(var F; FileName: string);:给文件变量连接一个外部文件名。这里需要注意的是AssignFile不能用在已打开的文件上。 procedure TForm1 .Button1Click(Sender: TObject); var text : String; F1 : TextFile; begin Try AssignFile(F1,Trim(Edit1 .Text)); //变量与外部文件名关联 Append(F1); text := Memo1 .Text; write(f1,text); CloseFile(f1); //终止变量与外部文件的关联 Except ShowMessage( '写入失败'); End; end; Erase procedure Erase(var F);:删除一个外部文件。 AssignFile(MyFile, 'd:\dd.txt'); Erase(MyFile); //必须关闭一个文件后才可以删除它 2.ChDir procedure ChDir(const S: string); overload; procedure ChDir(P: PChar); overload; 将当前目录修改为指定目录。其中S

jquery实现的一个导航滚动效果

我是研究僧i 提交于 2020-04-03 22:34:38
在做校园网视频网站的时候,首页有一个导航页面要实现滚动效果,有样例,但代码是在难弄懂,貌似网页设计这块还是只有自己的代码自己懂,索性就仿造别人的效果自己做了一个,大体上还行,看起来还是比较流畅的,不次于原作的幺。 现在先把代码拷贝到这里,以后再逐一简化修改: 实现混动效果,脚本代码如下: var all=0; //滚动单位的个数 var no=0; //当前要滚动的位置,每隔短时间递增 var s_width=0; //滚动单位的宽度 $(document).ready(function(){ all=$('.slide').length; //得到需要滚动单位的页面的个数 s_width=$('.slide').eq(0).width(); //得到滚动单位的宽度 $("#slides").css('width',all*s_width);//把外层容器的宽度设为所有滚动单位的总合 var contiar=$('.control_links'); for(var i=0;i<all;i++){ contiar.append("<li></li>"); } $('.control_links li').bind('click mouseenter',function(){ var index=$(this).index(); no=index; var no_= no%all; $

jquery插件开发

懵懂的女人 提交于 2020-04-03 21:30:56
;(function($, window, document,undefined) { var Beautifier = function(ele, opt) { //创建对象 this.$element = ele, //接受jq对象 this.defaults = { //默认参数 'color': 'red', 'fontSize': '12px', 'textDecoration': 'none' }, this.options = $.extend({}, this.defaults, opt) //传递的参数和默认参数合并 } Beautifier.prototype = { //对象添加方法 beautify: function() { return this.$element.css({ 'color': this.options.color, 'fontSize': this.options.fontSize, 'textDecoration': this.options.textDecoration }); } } $.fn.myPlugin = function(options) { //把对象的方法添加到jquery方法中 var beautifier = new Beautifier(this, options); //外部传进jq对象和用户配置

2018.04.03学习笔记 RegExp类型

試著忘記壹切 提交于 2020-04-03 08:05:05
1.正则表达式通常被用来检索替换那些符合某个模式(规则)的文本 2.标志有g i m 3.模式中的( [ { \ ^ $ \ ) ? * + . ] }要转义 4.实例属性source按字面量形式返回字符串 5.exec()方法接收要应用模式的字符串参数,返回包含第一个匹配信息项信息的数组,返回的数组包含两个额外的属性index(表示匹配项在字符串中的位置)和input(表示应用正则表达式的字符串),数组中的第一项是与整个模式匹配的字符串,其他项是与模式中捕获组匹配的字符串 var text="cat, bat, sat, fat"; var pat= /.at/g; var matches=pat.exec(text); console.log(matches.index); console.log(matches[0]); console.log(matches.input); 6.test()方法接收一个字符串参数,在模式与参数匹配的时候返回true,不然返回false。可以与if语句结合用。 var re=/cat/g; var t="catastrophe"; var judge=re.test(t); console.log(judge); console.log(t); console.log(re); 7.RegExp构造函数属性。 var text="this

javascript数据类型判断

两盒软妹~` 提交于 2020-04-03 01:59:58
js的变量是松散类型,也就是不像java语言那样,需要在变量前面申明对象类型,加var后对变量进行申明,类型默认为undefined,当赋值后才确定变量类型。 js变量类型判别方式我所知道的有三种,第一种是typeof,第二种是instanceof,第三种是使用对象原型的tostring方法。 (1)第一种方法typeof: var a, b = 1, c = "1", d = false, e = [], f = {}, g = function(){}; console.log(typeof a); console.log(typeof b); console.log(typeof c); console.log(typeof d); console.log(typeof e); console.log(typeof f); console.log(typeof g); 控制台输出undefined,number,string,boolean,object,object,function. 为什么数组跟对象输出都是object? 我的理解是,数组跟对象是字面量写法,实际上它们等价于 var e = new Array(); var f = new Object(); 而引用类型的变量typeof都是输出object. 可以试一下 var a = /./; console.log

02函数-01-函数的定义和调用

♀尐吖头ヾ 提交于 2020-04-03 01:21:46
1、定义函数 function abs(x) { if (x >= 0) { return x; } else { return -x; } } 7 1 function abs(x) { 2 if (x >= 0) { 3 return x; 4 } else { 5 return -x; 6 } 7 } 如果没有return,函数执行完毕也会返回结果,不过结果是undefined。 由于在JS的世界中,函数也是一个对象,所以上述定义的 函数实际上也是一个对象 ,而 函数名则可视为指向该函数的变量 。 所以上面的函数定义等价于: var abs = function (x) { if (x >= 0) { return x; } else { return -x; } }; 7 1 var abs = function (x) { 2 if (x >= 0) { 3 return x; 4 } else { 5 return -x; 6 } 7 }; 2、调用函数 JS的函数允许任意个,也不影响调用,接以上的abs函数: //比定义的参数多 abs(10, 'blablabla'); // 返回10 abs(-9, 'haha', 'hehe', null); // 返回9 //比定义的参数少 abs(); // 返回NaN --> 此时abs(x

linux之let用法

好久不见. 提交于 2020-04-02 19:51:08
转自:http://blog.sina.com.cn/s/blog_a7b22c930101tfqo.html shell程序中的操作默认都是字符串操作,在要运行数学运算符的时候可能得到意想不到的答案: var=1var=$var+1echo $varoutput:1+1 从这个例子中可以看出shell字符串连接的操作,需要注意的是空格。 在shell中可以使用let来指示下面是算术表达式,let表达式内变量不用加$ var=1let "var+=1" 或 let var+=1 这种写法运算符间不能有空格 echo $varoutput:2 这其中的let可以用(())代替,let ″j=i*6+2″等价于((j=i*6+2)), 就像很多的循环中用法一样 注意:let必须是完整的算术表达式,即有等号两边    (())、expr 可以只有等号右边的计算,由$((...))、$(expr ...)、`expr ...` 查看返回结果 var=1((var++)) 查看结果: echo $(())echo $varoutput:2 还有一种写法: var=1var=$[$var+1]echo $varoutput:2 使用expr,需要注意的是其中的那个符号并不是单引号,而是“1”左边的那个键 注意:将需要运算的表达式写入在expr 后面,保证参数与运算符号中间有空格隔开 。 var