深入理解 JavaScript 系列—什么是作用域

几乎所有编程语言最基本的功能之一,简单的说,作用域控制着变量与函数的可见性以及生命周期。那么问题来了:

  1. 变量存储在哪?
  2. 怎么找到变量?
    这些问题就需要一套良好的规则来存储和查找变量,而这种规则被称之为作用域。
    但是,究竟在哪里并且怎么设置这些作用域的规则呢?

我们学习作用域的方式就是将这个过程模拟成几个人物之间的对话。那么,由谁进行这场对话呢?

演员表

  • 引擎

从头到尾负责整个 Javascript 程序的编译及执行过程。

阅读更多

Ubuntu 16.04 LTS快速更新阿里源

新手在使用Ubuntu的时候可能在升级时感觉很慢,如果这样他就需要换一个适合自己的源了。
下面我就简单的说一下怎样换源。
在终端里输入 sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup (表示备份列表)
再输入 sudo gedit /etc/apt/sources.list
你就能看到源列表了,把你看到的都删除然后粘贴上适合你的源
源,自己找一个适合自己的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sudo vi /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
##测试版源
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
# 源码
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
##测试版源
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
# Canonical 合作伙伴和附加
deb http://archive.canonical.com/ubuntu/ xenial partner
deb http://extras.ubuntu.com/ubuntu/ xenial main

深入浅出基于依赖收集的响应式原理


每当问到 VueJS 响应式原理,大家可能都会脱口而出“Vue 通过 Object.defineProperty 方法把 data 对象的全部属性转化成 getter/setter,当属性被访问或修改时通知变化”。然而,其内部深层的响应式原理可能很多人都没有完全理解,网络上关于其响应式原理的文章质量也是参差不齐,大多是贴个代码加段注释了事。本文将会从一个非常简单的例子出发,一步一步分析响应式原理的具体实现思路。

使数据对象变得“可观测”

首先,我们定义一个数据对象,就以王者荣耀里面的其中一个英雄为例子:

1
2
3
4
const hero = {
health: 3000,
IQ: 150,
};

我们定义了这个英雄的生命值为 3000,IQ 为 150。但是现在还不知道他是谁,不过这不重要,只需要知道这个英雄将会贯穿我们整篇文章,而我们的目的就是通过这个英雄的属性,知道这个英雄是谁。

现在我们可以通过 hero.health 和 hero.IQ 直接读写这个英雄对应的属性值。但是,当这个英雄的属性被读取或修改时,我们并不知情。那么应该如何做才能够让英雄主动告诉我们,他的属性被修改了呢?这时候就需要借助 Object.defineProperty 的力量了。

阅读更多

javascript实用技巧和写法建议

前言

从大学到现在,接触前端已经有几年了,感想方面,就是对于程序员而言,想要提高自己的技术水平和编写易于阅读和维护的代码,我觉得不能每天都是平庸的写代码,更要去推敲,去摸索和优化代码,总结当中的技巧,积极听取别人的建议,这样自己的技术水平会提高的更快。那么今天,我在这里就分享一下关于 javascript 方面的写作的实用技巧和建议,这些技巧和建议是我平常在开发项目上会用到的,希望能让大家学到知识,更希望能起到一个交流意见的作用,也就是说大家有什么好的技巧或者建议,欢迎分享,或者觉得我的想法存在什么问题,欢迎指出!

更短的数组去重写法

1
2
3
[...new Set([2, "12", 2, 12, 1, 2, 1, 6, 12, 13, 6])];
//[2, "12", 12, 1, 6, 13]
//es6的新特性

对象深浅拷贝

关于对象的深浅拷贝,我个人见解就是有一下几点:

阅读更多

新起点

做开发也有三年了,从代码小白到今天一直是顺风顺水,今年6月份转战来到西安,自己天真的以为在这里可以大刀阔斧的大干一番,没想到坎坷才刚刚开始。
面试了好多家都被没能通过,理论基础差导致要么公司开的薪水达不到自己的要求,要么直接没音讯,这让我郁闷了好几天,自己在那琢磨在上家公司的时候,既能开发web,又能开发app,对于新技术也能迅速上手,怎么就差的连工作都找不上,真的是说不出的失落……
一个成功的男人背后都有一个伟大的女人这句话说的一点都没错,反正我是信了。我们家灰灰在我郁闷的那几天就一直开导我。确实是有舍必有得,有高峰就有低谷,现在我需要的是补充我的基础知识,在基础知识中挖掘编程的核心思想,是时候该重新学习!真正的学习!领悟技术!接纳技术!
在这里感谢,那些拒绝我的面试官,给了我重新认识自己的机会。感谢我们家灰灰,在我最无助的时候支持我、鼓励我。