JS学习笔记(1) 数据类型,表达式,运算符,语句

一.数据类型

1.原始类型

number string boolean null undefined object 对象

2.隐式转换

等于和严格等于

等于== 在类型不同时会尝试转换
严格等于===

3.包装对象

4.类型检测

方法:

1.typeof

typeof 100 "number"
typeof true "boolean"
typeof function "function"
typeof undefined "undefined"
typeof new object() "object"
typeof [1,2] "object"
typeof NaN "number" NaN 就是not number
typeof null "object"
遇到null失效

2.obj instanceof Object

[1,2]instanceof Array===true
new Object() instanceof Array===false
不同的window或ifeame中不可以使用

3.object.prototype.toString

Object.prototype.toString.apply([])==="[object Array]"
IE6,7有bug

4.constructor
5.duck type

二.表达式和运算符

1.表达式

原始表达式
数组表达式

new Array(1,2)
[1,2]
{X:1,y:2} var o = new Object();o.x=1;o.y=2;

函数表达式

var fe = function(){};

属性访问表达式

var o ={x:1}
o.x o['x']

调用表达式

func()

对象创建表达式

new Func(1,2)

2.运算符

条件运算符

var val=true?1:2 //val = 1

逗号运算符

var val =(1,2,3); //val = 3将逗号隔开的表达式都进行运算,然后取最右边的值。

Delete运算符

delete obj.x; var obj = {x:1} obj.x; //1 delete obj.x; obj.x //undefined

in 运算符

window.x = 1; 'x' in window /true

instanceof,typeof运算符

{} instanceof Object //true
typeof 10===number

new运算符
this 运算符

this;//Windows(浏览器)
var obj =={ func:function(){return this;} }; obj.func();//obj

void 运算符

只会返回undefined;

运算符优先级

三.语句和严格模式

语句

1.blick 块语句 {}

用于组合0~多个语句。块语句用一对花括号定义
没有块级作用域

2.var 声明语句

var a=b=1; b会被声明为全局变量
声明多个变量使用逗号隔开
var a=1,b=1; Atom.lnk

3.try catch 语句

这是一个异常捕获语句。
try{ throw "test"; }catch(ex){ console.log(ex);//test }finally{ console.log("finally") }
try 如果抛出异常就执行catch。不管如何都执行finally

4.function 语句

通过function定义函数对象 被称为函数声明
通过定义变量为函数表达式
函数前置(函数声明被优先处理)

5.for in 语句

var p; var obj={x:1,y:2} for(p in obj){ }
1.顺序不确定
2.enumerablewei为false时不会出现
3.for in对象属性时受原型链影响;

6.switch语句

break

7.循环语句 while do while for

8.with 语句

修改当前作用域
with({x:1}){ console.log(x); }
深层次调用
不建议使用
严格模式下禁用

严格模式

"use strict "

你可能感兴趣的:(JS学习笔记(1) 数据类型,表达式,运算符,语句)