yanhaijing(2)

https://yanhaijing.com/basejs/
1.表达式产生值,语句通常“做某些事情”
2.原始类型和对象区别
(1)每一个对象有一个独一无二的标志,并且仅和自己相等

 var obj1 = {};  // 一个空对象
 var obj2 = {};  // 另一个空对象
 obj1 === obj2;//false

(2) 原始类型值的属性无法更改,无法添加和移除属性。

   var str = 'abc';
  str.foo = 3; // try to create property `foo` ? no effect
   str.foo  // unknown property

3.undefined和null
#######undefined没有值
1)未初始化的

  var foo;
  foo;// undefined

2)读取不存在的属性

var obj = {}; // 空对象
obj.foo;//undefined

3)缺省的参数

function f(x) { return x }

########null没有对象
4.“包装对象”,就是分别与数值、字符串、布尔值相对应的Number、String、Boolean三个原生对象。

var v1 = new Number(123);
var v2 = new String('abc');
var v3 = new Boolean(true);
typeof v1 // "object"
typeof v2 // "object"
typeof v3 // "object"

Number、String和Boolean如果不作为构造函数调用(即调用时不加new),常常用于将任意类型的值转为数值、字符串和布尔值。

Number(123) // 123
String('abc') // "abc"
Boolean(true) // true

三种包装对象各自提供了许多实例方法。两种它们共同具有、从Object对象继承的方法:valueOf和toString

var str = 'abc';
str.length // 3

abc是一个字符串,本身不是对象,不能调用length属性。JavaScript 引擎自动将其转为包装对象,在这个对象上调用length属性。调用结束后,这个临时对象就会被销毁。这就叫原始类型与实例对象的自动转换。
等同于:

var strObj = new String(str)
// String {
//   0: "a", 1: "b", 2: "c", length: 3, [[PrimitiveValue]]: "abc"
// }
strObj.length // 3

5.typeof 和 instanceof
typeof 主要用于原始值,instanceof 主要用于对象
type操作数 结果
undefined 'undefined'
null 'object' null的类型是“object”。这是一个bug,但从没被修复,因为修复后会破坏现有的代码
Boolean value 'boolean'
Number value 'number'
String value 'string'
Function 'function'函数的类型是“function”而不是“object”。鉴于函数(类型为“function”)是对象(类型是对象)的子类型,这不是一个错误。
All other values 'object'

> var b = new Bar();  // 通过构造函数Bar创建对象
> b instanceof Bar  //true
> {} instanceof Object  // true
> [] instanceof Array  //true
> [] instanceof Object  // 数字是对象的子类型true

6.以下被理解成false
undefined, null
布尔: false
数字: -0, NaN
字符串: ‘’
7.二元逻辑运算符(短路运算——如果第一个操作数可以确定结果,第二个操作数将不被验证)

false && foo()   //foo()永远不会被调用
true  || foo()   //foo()永远不会被调用

二元逻辑运算符结果不一定是true/false:

 NaN && 'abc'   // NaN
 123 && 'abc'    //'abc'

'abc' || 123      //'abc'
  '' || 123        //123

8.JavaScript中的数字是真正的浮点数。
由于二进制表示的固有缺陷,以及有限的机器空间,我们不得不面对一个充满舍入误差的规范。

1 === 1.0  // true

9.字符串方法slice、trim、toUpperCase、indexOf

> 'abc'.slice(1)  // 复制子字符串
  'bc'
> 'abc'.slice(1, 2)
  'b'

> 'abc'.indexOf('b')  // 查找字符串
  1
> 'abc'.indexOf('x')
  -1

10.在严格模式下,this指向undefined;在非严格模式下,this的值是被称作全局对象(global object)(在浏览器里是window)
11.IIFE:模拟块级作用域
有时你想模拟一个块,例如你想将变量从全局作用域隔离。完成这个工作的模式叫做 IIFE

(function () {  // 块开始
    var tmp = ...;  // 非全局变量
}());  // 块结束

外面的括号用来阻止它被解析成函数声明;只有函数表达式能被立即调用。函数体产生一个新的作用域并使 tmp 变为局部变量
12.闭包
每个函数保持和函数体内部变量的连接,甚至离开创建它的作用域之后。例如:

function createIncrementor(start) {
    return function () {  // (*)
        return start++;
    }
}
var inc = createIncrementor(5);
inc();//5
inc();//6
inc();//7

13.检验属性是否在某一对象中
法1:'newProperty' in jane
法2:jane.newProperty !== undefined 读取不存在的属性的会得到undefined值
用delete删除属性
14.如果你引用一个方法,它将失去和对象的连接。解决办法是使用函数内置的bind()方法。它创建一个新函数,其this值固定为给定的值。

var jane = { 
name: 'Jane',

   
 describe: function () {
 
'use strict';

return 'Person named '+this.name;}

};
var func = jane.describe;
func();//TypeError: Cannot read property 'name' of undefined
var func2=jane.describe.bind(jane);
func2();//'Person named Jane'

15.in操作符可以作用在数组也可以作用在对象上

var arr = [ 'a', 'b', 'c' ];
'a' in arr;//true

16.正则表达式
1)test()

> /^a+b+$/.test('aaab')
true

2)exec()匹配和捕获组,返回的数组第一项(索引为0)是完整匹配,捕获的第一个分组在第二项(索引为1)

> /a(b+)a/.exec('_abbba_aba_')
[ 'abbba', 'bbb' ]

3)replace()搜索并替换

> '<a> <bbb>'.replace(/<(.*?)>/g, '[$1]')
'[a] [bbb]'
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,132评论 0 13
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,106评论 0 21
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,219评论 0 4
  • 我想给这段感情一个正式的告别 认识你的时候 夏末。微凉 你的温度刚刚好 你的笑容刚刚好 习惯你对我的好 或许是我太...
    每每阅读 102评论 0 0
  • 你应该是一阵风 我应该是一场梦 从此再无相见的日子里 故事早已改写了当初的模样 一定有些什么 被我不小心遗忘 否则...
    一个冷月啊阅读 369评论 0 0