深入浅出javascript学习笔记
弱类型的隐式转换:
32 + 32 // 64
“32” + 32 // “3232”
“32” – 32 // 0
#### 巧用+/-规则转换类型:
```
num – 0 // 把变量转换成数字
num + '' // 把变量转换成字符串型
```
#### ==:
```
"1.23" == 1.23 // true;
0 == false // true
null == undefined // true;
new Object() == new Object() // false;
[1,2] == [1,2] // false
```
#### ===:
1.先比较类型,类型不同,返回false
2.再比较值
```
null === null // true
undefined === undefined // true
NaN ≠ NaN // == === 均不等
</br>
#### 类型检测
typeof function // "function"
typeof undefined // "undefined"
typeof new Object // "object"
typeof [1,2] // "object"
typeof NaN // "number"
typeof null // "object" 约定俗成
instanceof 主要判断Object类型
判断左操作数的原型链上
<br/>
<br/>
###三、语句
####1 block语句、var语句
1. 函数有作用域,但是for,if之类的循环是没有块级作用域的
2. `var a = b = 1 // b在这里相当于创建了一个全局变量`
正确的写法:`var a = 1, b = 1;`
function foo() {
var a = b = 1;
}
foo();
console.log(typeof a); // 'undefined';
console.log(typeof b); // 'number';
</br>
####2 函数、switch、循环
1.函数声明会被前置、函数表达式不会
例如:
f1(); // true
function f1() {
// do sth
return true;
}
f2(); // TypeError
var f2 = function() {
// do sth
};
2.for..in循环:
1、顺序不确定
2、enumerable为false时不会出现
3、for in会受原型链的影响(原型链上属性的enumerable为true的话,是会被显示出来的)
3.with语句会修改作用域
缺点:让Js引擎优化更难;可读性差;可被变量定义代替;严格模式下会被禁用
</br>
####3 严格模式
严格模式是一种特殊的运行模式,它修复了部分语言撒谎那个的不足,提供更强的错误检查,并增强安全性。
>1. 不允许是用with语句
>2. 不允许未声明的变量被赋值
>3. arguments变为参数的静态副本
>4. delete参数、函数名会报错
>5. delete不可配置的属性会报错
>6. 对象字面量重复属性名报错
>7. 禁止八进制字面量
>8. eval,arguments变为关键字,不能作为变量、函数名
>9. eval会独立作用域
>10. 一般函数调用this(不是对象的方法调用,也不使用apply/call/bind等修改this)指向null,而不是全局对象。若使用apply/call,当传入null或undefined时,this指向null或undefined,而不是全局对象。
>11. arguments.caller,arguments.callee被禁用
</br>
深入浅出javascript学习笔记的更多相关文章
- Java程序猿的JavaScript学习笔记(汇总文件夹)
最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...
- Java程序猿的JavaScript学习笔记(8——jQuery选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿JavaScript学习笔记(2——复制和继承财产)
计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...
- Java程序猿的JavaScript学习笔记(3——this/call/apply)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿JavaScript学习笔记(4——关闭/getter/setter)
计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...
- Java程序猿JavaScript学习笔记(14——扩大jQuery UI)
计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...
- javascript学习笔记(四) Number 数字类型
数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数 toExponential() 方法 用科学 ...
- JavaScript学习笔记之数组(二)
JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...
- JavaScript学习笔记[0]
JavaScript学习笔记[0] 使用的是廖雪峰JavaScript教程. 数据类型 Number 表示数字,不区分浮点整形. === 比较时不转化数据类型. == 反之. NaN与任何值都不想等, ...
随机推荐
- Python和shell中Base64编码使用那些事
做开发第一个接触的编码方式就是Base64,当时是用url来传输一些参数,传输的两端会用Base64来编码和解码,保证数据不被url转义破坏. 下面是 维基百科 Base64 中的介绍,其实自己实现起 ...
- Android的Context Manager(服务管理器)源码剖析-android学习之旅(99)
Context Manager介绍 Context Manager对应的进程是servicemanager进程,它先于Service Server和服务客户端运行,进入接收IPC数据的待机状态,处理来 ...
- OVS 中的哈希表: shash
shash出现在OVS的代码中,定义如下: struct hmap_node { size_t hash; struct hmap_node * next; }; struct ...
- 【省带宽、压成本专题】深入解析 H.265 编码模式,带你了解 Apple 全面推进 H.265 的原因
过去几年,又拍云一直在点播.直播等视频应用方面潜心钻研,取得了不俗的成果.我们结合点播.直播.短视频等业务中的用户场景,推出了"省带宽.压成本"系列文章,从编码技术.网络架构等角度 ...
- 深入源码解析类Route
微软官网对这个类的说明是:提供用于定义路由及获取路由相关信息的属性和方法.这个说明已经很简要的说明了这个类的作用,下面我们就从源码的角度来看看这个类的内部是如何工作的. public class Ro ...
- MongoDB学习笔记(三)
第三章 索引操作及性能测试 索引在大数据下的重要性就不多说了 下面测试中用到了mongodb的一个客户端工具Robomongo,大家可以在网上选择下载.官网下载地址:http://www.robomo ...
- js中用var与不用var的区别
var num = 1: 是在当前域中声明变量. 如果在方法中声明,则为局部变量(local variable):如果是在全局域中声明,则为全局变量. 而 num = 1: 事实上是对属性赋值操作.
- Mybatis 系列1
第一篇教程, 就先简单地写个demo, 一起来认识一下mybatis吧. 为了方便,我使用了maven, 至于maven怎么使用, 我就不做介绍了.没用过maven的, 也不影响阅读. 一.Mybat ...
- 终端字形logo
网上有很多的项目都有一个自己的字形logo,而我也在开发一个小的项目,也想要生成一个终端字形的logo,于是找到这款小工具,分享给大家:FIGlet “FIGlet is a program for ...
- Spring Boot 事件和监听
Application Events and Listeners 1.自定义事件和监听 1.1.定义事件 package com.cjs.boot.event; import lombok.Data; ...