for循环中的switch case

今天写代码时遇到一个问题

var 没有块级作用域!

var 没有块级作用域!

var 没有块级作用域!

1
2
3
4
5
6
7
8
9
10
11
12
13
for (var i = 0; i < 3; i++) {
var a = '1'
switch (a) {
case '1':
for (var i=0;i<3;i++){

}
break
case '2':
break
}
console.log(i)
}

本来我想让

a=’1’ 时执行case ‘1’

a=’2’ 时执行case ‘2’

结果偏偏不执行case ‘2’

当然,业务比这复杂得多

经过调试:

  • 第一次循环i=0
  • 然后进入case ‘1’
  • i=4
  • 结束外层循环
  • 所以控制台打印4之后就结束了

实际上是个var没有块级作用域问题,

用let就可以解决,

但这种问题真正在实际复杂应用中就很难发现了,

JS基础真的是很重要,

以后能用let尽量不用var真的时太坑了

canvas 实现图片打码

我的收获

  • 对基础api的掌握
    • ctx.drawImage(img, x, y, img.width, img.height)
    • 获取像素 ctx.getImageData(x1, y1, x2, y2) 返回的对象有三个属性,width、height、data(所有像素的rgba做成的数组)
    • 设置像素ctx.putImageData(imageData, x, y)
    • 创建像素区域,默认黑色透明 ctx.createImageData(width, height)
  • 难点
    • 封装两个方法:取像素点的rgba、设置像素点的rgba
    • 打码:取一块像素区域中的rbga覆盖整个像素区域

canvas 画一个时钟

  • 原来canvas还有作用域这回事儿

  • canvas中的save()和restore()限定了样式的作用范围(包括:fillStyle、strokeStyle、lineWidth、lineCap以及一些变换方法)

  • 用户友好处理,在canvas标签中向用户给出canvas不兼容的提示和处理方法

  • 基本上用这样的套路去绘制

    1
    2
    3
    4
    5
    canvas.save()
    //这里写样式
    canvas.beginPath()
    //这里绘图形
    canvas.restore()
  • 以上是我干完这活儿的全部收获

猴子与打字机

有一个挺有趣的定理:猴子与打字机

猴子和打字机(Monkeys and Typewriters),如果无数多的猴子在无数多的打字机上随机的打字,并持续无限久的时间,那么在某个时候,它们必然会打出莎士比亚的全部著作。猴子和打字机的设想在20世纪初被法国数学家Emile Borel推广,但其基本思想——无数多的人员和无数多的时间能产生任何/所有东西——可以追溯至亚里士多德。 来自:百度百科

es6 精炼

let 和 const

  • let有块作用域
    • 在同一个作用域内,let声明的变量不能重复
    • var 定义的变量会提升
    • let 定义的变量不提升,不能在声明前使用
  • const 有块级作用域
    • 一旦赋值不能改变
    • 声明必赋值
    • let user = {}
      • const PERSON = user
      • user改变,PERSON不会报错,因为PERSON的值是个指针

Gulp教程

Gulp 项目构建工具

gulp特点

  • 任务化

  • 基于流

    • gulp有自己的内存
    • 从本地读数据到内存(输入流)
    • 进行操作
    • 从内存输出到本地(输出流)
  • 高效(异步多任务)

口才艺术与社交礼仪

第一章 礼仪

礼仪不是保守,而是尊重

礼仪

  • 三种手势
    • 手指
    • 手掌朝上:感恩
    • 手掌朝下:权威 否定

Vue全家桶之Vuex

Vuex是什么?

Vuex 我姑且称之为vue老爷的管家

刚开始学vuex的时候,它给我的感觉类似于cookie、local Storage这种东西。使用时给我带来最方便的就是让组件传值变得更加方便了。

官方把vuex称为状态管理模式(State Management Pattern)。

正则表达式

昨天去多益网络笔试,让再一次我知道了正则表达式有多重要。笔试卷子上考察正则表达式,选择、简答各一道,最后一道编程也考正则。我竟然把test和match是谁的方法都记错了(reg.test(str);str.match(reg))

创建Stack类的不同方法

读《学习JavaScript数据结构和算法》知识精简
本文内容:用JS模拟栈、用栈解决十进制转二进制

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×

// tidio机器人助手