分类
未分类

JavaScript 中你应该知道的 旧习惯 与 新习惯(一)

使用const 或者 let 替代 var

使用const 声明你不打算改变的值,比如配置,比如对象的引用。

使用let 声明打算改变的值

缩小变量的作用域

不用在开头列出所有的变量,现在推荐使用let 或者 const 就近声明,提高代码的可维护性

用块状作用域代替匿名函数

for(var n = 0; n < 10; n++){
    (function(value){
        setTimeout(
        	function(){
                console.log(value);
            },10
        );
    })(n)
}

使用块状作用率代替匿名函数

for(let n = 0; n < 10; n++){
	setTimeout(function(){
        console.log(n);
    })
}

使用箭头函数代替各种访问this值的变通方式

为了回调中访问上下文的this,使用了这些

旧习惯

  • 使用变量,var self = this
  • 使用 bind
  • 在支持的函数中,使用 thisArg 形参

新习惯

使用箭头函数

在不涉及this,或者大多数情况下,箭头函数都可以代替普通函数,更简洁

使用参数默认值,而不是代码实现

旧习惯

function do(参数){
	if(参数 === undefined){	
		参数 = 默认值
	}
    // XXX
}

新的习惯

function do(参数 = 默认值){
	// XXX
}

使用 rest 参数替代 arguments 关键字

旧习惯

function func1(a, b, c) {
  console.log(arguments[0]);
  // expected output: 1

  console.log(arguments[1]);
  // expected output: 2

  console.log(arguments[2]);
  // expected output: 3
}

func1(1, 2, 3);

新习惯

function func1(...rest) {
  console.log(rest[0]);
  // expected output: 1

  console.log(rest[1]);
  // expected output: 2

  console.log(rest[2]);
  // expected output: 3
}

func1(1, 2, 3);

考虑尾后逗号

旧习惯

const temp = {
	a:1,
	b:2
}

新习惯

const temp = {
	a:1,
	b:2,
}

好处在哪尼,问题在修改的时候可以少敲一个逗号

使用类创建构造函数

旧习惯

// 使用传统的函数语法
var Bird = function Bird(name){
   	this.name = name;
}
Bird.prototype.talk = function talk(string){
    return this.name + 'talk:' + string;
}

var bird = new Bird("小红");

bird.talk("Hi!");
// '小红talk:Hi!

新习惯

class Bird{
	constructor(name){
        this.name = name;
    }
    talk(string){
        return this.name + 'talk:' + string;
    }
}
var bird = new Bird("小红");

bird.talk("Hi!");
// '小红talk:Hi!
分类
未分类

deno的初体验-环境安装与第一个程序

denoDeno 的目标是为现代程序员提供一个高效、安全的脚本环境。

它始终以单个可执行文件形态,作为分发文件,并且该可执行文件,足够运行任何 deno 程序。

给定一个 deno 程序的 URL,您应该能够用不超过 50MB 的 Deno 可执行文件,来执行它。

Deno 明确承担运行时,和包管理器的角色。它用标准的浏览器兼容协议,来加载模块:URLs。

Deno 为提供了程序访问系统的安全保证,默认情况下,它是最严格的安全沙盒。Deno 提供一套经过评审(审核)的标准模块这保证了与 Deno 的合作。
windows 下安装Deno 在 OSX、Linux 和 Windows 上工作。deno 是单个二进制可执行文件。它没有外部依赖关系。deno_install提供方便的脚本,来下载和安装二进制文件。

使用 Shell:

$ curl -fsSL https://deno.land/x/install/install.sh | sh

使用 PowerShell:

> iwr https://deno.land/x/install/install.ps1 | iex

使用Scoop(Windows):

scoop install deno


也可以通过github.com/denoland/deno/releases下载 tarball 或 zip 文件,手动安装 deno。这些包只包含一个可执行文件。您必须在 Mac 和 Linux 上,设置可执行的环境变量(PATH)。

安装完成之后初体验
新建一个 helloworld.ts在里面写下

console.log("hello world");

终端中运行

deno run .\helloworld.ts

新建一个 a.ts

export const a = {  name: "i am a",};

在helloworld.ts中引入

import { a } from "./a.ts";
console.log("hello world",a.name);

注意a.ts 的后缀目前版本并不能省略,需要明确写出

先体验到这里,后续在更新

分类
openlayers

openlayers 一些常用的事件

openlayers 里基本上所有的东西都有事件,要是不清楚的话,可以去官网,在官网找到你要找的类,如果这边有Fires 下面的事件都是可以监听的。

我们这里举一个例子 :

监听view分辨率变化的例子

map.getView().on('change:resolution', function(evt) { })

监听map的点击事件

map.on('singleclick', function(evt) {
       //code
      });
这些就是map class可以监听的事件

取消也是一样的,使用off就可以

分类
未分类

valueof() toString() 的区别与共同点

共同点:在 JavaScript 中,toString()方法和valueOf()方法,在输出对象时会自动调用。

不同点:二者并存的情况下,在数值运算中,优先调用了valueOf,字符串运算中,优先调用了toString。

前提是:返回的是基本形式,否则调用另一个来转换!

分类
ES6

从一道平平无奇的题开始认识 set,sort等功能

拿到题第一步,读懂题目 要求 数组扁平化 去重 升序排列 数组

输入参数是一个[[]]的形式,第一步扁平

function flatten(arr) {
     while (arr.some(item => Array.isArray(item))) {
         arr = [].concat(...arr);
     }
     return arr;
 }

这些都很基础, … 与 some ,不明白的随便看看es6 就明白了

 arr =  [...new Set(flatten(arr))];  //去重 转为set 去重,再转为数组
 function sortNumber(a,b)
 {
 return a - b
 }
arr.sort(sortNumber)

这一步的sortNumber 是个函数 有a,b两个输入,当输出的值 小于 0 ,那么 a 会被排列到 b 之前; 反之b 会被排列到 ba之前 .

有什么不明白的留言就可以,随缘回复