var函数

Javascript函数声明与递归调用

元气小坏坏 提交于 2020-04-05 23:02:55
Javascript的函数的声明方式和调用方式已经是令人厌倦的老生常谈了,但有些东西就是这样的,你来说一遍然后我再说一遍。每次看到书上或博客里写的Javascript函数有四种调用方式,我就会想起孔乙己:茴字有四种写法,你造吗? 尽管缺陷有一堆,但Javascript还是令人着迷的。Javascript众多优美的特性的核心,是作为顶级对象(first-class objects)的函数。函数就像其他普通对象一样被创建、被分配给变量、作为参数被传递、作为返回值以及持有属性和方法。函数作为顶级对象,赋予了Javascript强大的函数式编程能力,也带来了不太容易控制的灵活性。 1、函数声明 变量式声明先创建一个匿名函数,然后把它赋值给一个指定的变量: var f = function () { // function body }; 通常我们不必关心等号右边表达式的作用域是全局还是某个闭包内,因为它只能通过等号左边的变量f来引用,应该关注的是变量f的作用域。如果f指向函数的引用被破坏(f = null),且函数没有被赋值给任何其它变量或对象属性,匿名函数会因为失去所有引用而被垃圾回收机制销毁。 也可以使用函数表达式创建函数: function f() { // function body } 与变量式不同的是,这种声明方式会为函数的一个内置属性name赋值

百度、高德、谷歌、火星、wgs84(2000)地图坐标相互转换的JS实现

我们两清 提交于 2020-04-05 19:41:57
一、调用例子: <!DOCTYPE html> <html lang= "en" > <head> <meta charset= "UTF-8" > <title>coordTransform</title> </head> <body> <h1>请按F12打开控制台查看结果</h1> <script src= "coordtransform.js" ></script> <script> //国测局坐标(火星坐标,比如高德地图在用),百度坐标,wgs84坐标(谷歌国外以及绝大部分国外在线地图使用的坐标) //百度经纬度坐标转国测局坐标 var bd09togcj02 = coordtransform.bd09togcj02(116.404, 39.915); //国测局坐标转百度经纬度坐标 var gcj02tobd09 = coordtransform.gcj02tobd09(116.404, 39.915); //wgs84转国测局坐标 var wgs84togcj02 = coordtransform.wgs84togcj02(116.404, 39.915); //国测局坐标转wgs84坐标 var gcj02towgs84 = coordtransform.gcj02towgs84(116.404, 39.915); console.log(bd09togcj02);

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

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

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

前端常见面试题

半腔热情 提交于 2020-04-01 07:36:36
一.JS (1) 在函数中赋值,多次赋值,出现问题 var a = b = c = 10; console.log(delete a); //false console.log(delete b); //true console.log(delete c); //true function fn(){ var a = b = c = 10; } fn(); console.log(b); //10 console.log(c); //10 console.log(a); //a is not defined (2)数组的length 赋值给变量后,无法判断数组长度 var arr = [1,2,3], i = 0, len = arr.length; arr.length = 2; console.log(len); //3 console.log(arr.length); //2 (3) 截取字符 console.log('abcdefg'.substring(4)) // efg (4) 统计一个字符里出现最多的字母和出现次数 var str = 'asdfssaaasasasasaa'; var json = {}; for (var i = 0; i < str.length; i++) { if(!json[str.charAt(i)]){ json[str.charAt

js分时函数

我是研究僧i 提交于 2020-04-01 01:16:57
qq中有10000个好友,每秒中渲染20个好友: var timeChunk = function(arr, fn, count) { var t; var start = function() { for(var i = 0; i < Math.min(count || 1, arr.length); i++) { var obj = arr.shift(); fn(obj) } } return function() { t = setInterval(function() { if(arr.length == 0) { return clearInterval(t) } start(); }, 1200) } } var arr = []; for(var i = 0; i < 1000; i++) { arr.push(i) } var renderList = timeChunk(arr, function(n) { var div = document.createElement('div'); div.innerHTML = n; document.body.appendChild(div); }, 8) renderList() 来源: https://www.cnblogs.com/qiyc/p/11310893.html

Javascript 严格模式详解

一世执手 提交于 2020-03-31 23:38:53
一、概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式: "严格模式" (strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。 设立"严格模式"的目的,主要有以下几个:   - 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;   - 消除代码运行的一些不安全之处,保证代码运行的安全;   - 提高编译器效率,增加运行速度;   - 为未来新版本的Javascript做好铺垫。 "严格模式"体现了Javascript更合理、更安全、更严谨的发展方向,包括IE 10在内的主流浏览器,都已经 支持 它,许多大项目已经开始全面拥抱它。 另一方面,同样的代码,在"严格模式"中,可能会有不一样的运行结果;一些在"正常模式"下可以运行的语句,在"严格模式"下将不能运行。掌握这些内容,有助于更细致深入地理解Javascript,让你变成一个更好的程序员。 本文将对"严格模式"做详细介绍。 二、进入标志 进入"严格模式"的标志,是下面这行语句:   "use strict"; 老版本的浏览器会把它当作一行普通字符串,加以忽略。 三、如何调用 "严格模式"有两种调用方法,适用于不同的场合。 3.1 针对整个脚本文件 将"use strict"放在脚本文件的第一行,则整个脚本都将以"严格模式"运行。如果这行语句不在第一行

JavaScript解析机制之变量提升

﹥>﹥吖頭↗ 提交于 2020-03-31 18:53:26
1、什么是预解析? 在当前作用域下,JS 运行之前,会把带有 var 和 function 关键字的事先声明,并在内存中安排好。(这个过程也可以理解为变量提升)然后再从上到下执行 JS 语句(预解析只会发生在通过 var 定义的变量和 function 上) 2、var 声明的变量 使用 var 声明的变量预解析:告诉解析器知道有这个名字的存在并默认将该变量赋值 undefined ,如下: console.log(x); //undefined var x = 5; 变量 x 虽然是在 console.log 后面定义的,但使用 var 申明的 x 会提前保存在内存中,并赋值 undefined ,然后再从上往下执行 JS 语句 。它的执行顺序类似于下面的结构: var x; console.log(x); //undefined x = 5; 先声明了 x,x 没有定义所以赋值为 undefined ,输出的结果自然为 undefined,然后再给 x 赋值为 5 需注意的是,如果变量声明没有使用 var,则不存在变量提升。如下: console.log(x); //error: x is not defined x = 5; x 没有使用 var 声明,所以报错找不到 x 3、functin 声明的函数 使用 function 声明函数的预解析:先告诉解析器这个函数名的存在