首页
学习
活动
专区
圈层
工具
发布

重新撸一遍javascript (一)

弱类型特性

数据类型

隐式转换

等于运算的规则

以下等于运算都为true

严格等于运算规则

包装对象

类型检测

typeof

instanceof

Object.prototype.toString

一个小练习

请编写arraysSimilar函数,实现判断传入的两个数组是否相似。具体需求:

1. 数组中的成员类型相同,顺序可以不同。例如[1, true] 与 [false, 2]是相似的。

2. 数组的长度一致。

3. 类型的判断范围,需要区分:String, Boolean, Number, undefined, null, 函数,日期, window.

当以上全部满足,则返回"判定结果:通过",否则返回"判定结果:不通过"。

表达式

原始表达式

复合表达式

数组 对象初始化表达式

函数表达式

属性访问表达式

调用表达式

代码语言:javascript
复制
func();

对象创建表达式

代码语言:javascript
复制
new Func(1,2);
new Object;

运算符

特殊运算符

条件运算符

c?a:b

代码语言:javascript
复制
var val? true?1:2  //1

逗号运算符

a,b

代码语言:javascript
复制
var val = (1,2,3); // val=3

delete运算符

in运算符

代码语言:javascript
复制
window.x=1;
'x' in window; // true

instanceof typeof运算符

代码语言:javascript
复制
{} instanceof Object; //true
typeof 100 === 'number'; //true

new运算符

this运算符

void运算符

代码语言:javascript
复制
void 0; // undefined
void(0); // undefined

语句

block块语句

函数作用域

var声明语句

var a=b=1;相当于隐式声明了全局变量b

try catch语句

代码语言:javascript
复制
try{
  throw "test";
} catch(ex){
  console.log(ex); // test
} finally {
  console.log('finally');
}
代码语言:javascript
复制
try{
  // do sth.
} finally {
  console.log('finally');
}

嵌套的情况

function语句

函数声明语句会被预先处理,称为函数前置,所以在声明前调用是可以的; 而函数表达式则不行

for ... in 语句

switch语句

with语句

不建议使用

严格模式

不允许用with

不允许未声明的变量被赋值

arguments变为参数的静态副本

delete参数 函数名报错

delete不可配置的属性报错

对象字面量重复属性名报错

禁止八进制字面量

eval agruments变为关键字 不能作为变量或函数名

eval独立作用域

其他特点

下一篇
举报
领券