0%

对象

对象可以通过两种方式定义:生命(文字)形式和构造形式。

类型

六种主要类型:string、boolean、number、null、undefined和object。
typeof null 会返回字符串“object”,这是一个bug。

原理是这样的,不同对象在底层都表示为二进制,在JavaScript中二进制前三位都是0的话会被判断为object类型,null的二进制表示全为0,自然前三位也是0,所以执行typeof时会返回“object”。

阅读全文 »

this和对象原型

this既不指向函数自身也不指向函数的词法作用域;
this实际上是在函数被调用时发生的绑定,它指向什么完全取决于函数在哪里被调用。

默认绑定(调用位置)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function baz() {
// 当前调用栈是:baz
// 因此,当前调用位置是全局作用域
console.log("baz");
bar(); // bar的调用位置
}

function bar() {
// 当前调用栈是:baz -> bar
// 因此,当前调用位置是在baz中
console.log("bar");
foo(); // foo的调用位置
}

function foo() {
// 当前调用栈是:baz -> bar -> foo
// 因此,当前调用位置是在bar中
console.log("foo");
}

baz(); // baz的调用位置
阅读全文 »

作用域和闭包

var a = 2

三个角色:

  • 引擎
  • 编译器
  • 作用域

变量的赋值操作会执行两个动作,首先编译器会在当前作用域中声明一个变量(如果之前没有声明过),然后在运行时引擎会在作用域中查找该变量,如果能找到就会对它赋值。

作用域嵌套

引擎从当前的执行作用域开始查找变量,如果找不到,就向上一级继续查找。当抵达最外层的全局作用域时,无论找到还是没有找到,查找过程都会停止。

什么是作用域

作用域是一套规则,用于确定在何处以及如何查找变量(标识符)。如果查找的目的是对变量进行赋值,那么就会使用LHS查询;如果目的是获取变量的值,就会使用RHS查询。

不成功的RHS引用会导致抛出ReferenceError异常。不成功的LHS引用会导致自动隐式地创建一个全局变量(非严格模式下),该变量使用LHS引用的目标作为标识符,或者抛出ReferenceError异常(严格模式下)。

阅读全文 »

记录一次web前端面试经历:春节过后回到学校就开始找工作,简历到处投递,但是回应者寥寥无几,也许是前端开发供大于求,也许是互联网寒冬,也许是就业压力大。这次去网易面试的机会是我偶然看到脉脉上有帮忙内推的我就发了一份简历,结果真的就收到了面试邀请。

阅读全文 »

慕课网学习的正则表达式的用法,下面是一些笔记以防遗忘。

工具

在线图形化工具http://regexper.com

实例化RegExp对象

  • 字面量
    var reg = /\bis\b/g; \b代表单词边界。
  • 构造函数
    var reg = new RegExp('\\bis\\b','g')

修饰符

  • g:global 全文搜索,不添加则默认搜索到第一个停止
  • i:ignore case 忽略大小写,默认的大小写敏感
  • m:mulitple lines 多行搜索
阅读全文 »

重新回到hexo博客。
其实第一次接触hexo博客也有一段时间了,但是没有坚持下去,偶然发现github上面的主页需要翻墙才能访问了。上次重装系统,文件又没有备份,因此干脆重新搭建了个人技术博客,这次主要部署在coding.net和github上。后续会将之前的文章再找回来,本篇主要记录hexo博客中md文件的格式。

阅读全文 »

关于这本书:

我是在看《web全栈工程师的自我修养》时,才听说这本书的。从书名《rework》(重来)来看,这本书应该讲的是一些新的思维方式。正如本书的副标题:“更为简单有效的商业思维”。本书确实在教我们这样一些思维方式。

阅读全文 »

说起来还真的是惭愧,这本书是我在寒假之前就从图书馆里借到的,处在职业迷茫期的我看见这本书的书名,如获珍宝。但是拖延症使我在开学后才开始看,但是由于时间充沛,我终于在接下来的的三周内看完了这本书。

标签内是后面回顾时候的批注。

以下是笔记,以备回顾。

阅读全文 »