js基础

by a friend:xuxin

 

1.   语法、值、对象、变量

语法

Unicode字符集

区分大小写

可选的分号:return ++ --等必须放在一行;

var i=1

+2

 

return

true

注释:JavaScript还能识别"<!--",如使用"//"一样。

直接量(literal):/regex/

标识符规则:字母、下划线$符号开头。

保留字

 

原始值:存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。( UndefinedNullBooleanNumber

UndefinedNull声明但未赋值的变量是值undefined。引用了未定义的属性、函数无明确返回值时,返回的也是值 "undefined"undefined等于null但表示的意义不同。

数字类型 64位的浮点数;Infinity 表示所有超出临界值的值,有正负之分;alert(-2E300);

NaN表示非数(Not a Number)。一般说来,这种情况发生在类型转换失败时。他不与任何值相等包括他自己。出于这个原因,一般不使用 NaN 值本身。isNaN()接受对象时先试图转换为原始值再判断。

字符串类型是常量,一旦创建就不可更改,可看作是行为与基本类型相似的引用类型

一对一的关系

 

基本类型的包装对象

String Boolean Number

直接使用原始型调用对象的方法和属性。JavaScript自动将String原始型转换成一个临时的String对象,调用其方法在丢弃这个临时对象。

“asdf”.length ;(123).toString(); false.valueOf();

 

强制转换

以函数形式调用Boolean(),String(),Number().将参数强制转换成相应的原始型。

Number():Number(“123aa”) 尝试先valueOf ,parseInt/parseFloat(“123aa”) 尝试先toString(); 转换Date()可以看出

String() 调用参数的toString方法,如果是nullundefined则返回对应的字符串表示

Boolean() 如果该值是空字符串、数字 0undefinedNaN、 或 null,它将返回 false;

 

对象是可变的键控集合(keys collections

键值是字符串(变量)

访问属性的方式:2 .的局限性 更直观

创建:new Constructor(); {} 字面量

数组

一种特殊的对象;稀疏的;arr[100];

数组的创建;[]new Array(2,3,4); new Array(2) != [2]

 

Date,正则表达式对象

 

 

变量

无类型 var

声明: 重复声明,隐式声明(给未声明的变量赋值,全局变量)

全局、局部作用域,没有块级作用域,变量声明在整个函数体都是有定义的。

作为属性的变量:全局变量是全局对象的属性,局部变量是一个完全独立的对象(称为调用对象,创建执行环境时定义的)的属性。

无用存储单元的收集。

2.   运算符和运算符

===类型相同

== 执行类型转换的规则如下:

如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0true 1

字符串==数字,在检查相等性之前,要尝试把字符串转换成数字。

对象= =字符串,在检查相等性之前,要尝试把对象转换成字符串。

对象= =数字,在检查相等性之前,要尝试把对象转换成数字。

在比较时,该运算符还遵守下列规则:

null undefined 相等。

在检查相等性时,不能把 null undefined 转换成其他值。

如果某个运算数是 NaN,等号将返回 false,非等号将返回 true

如果两个运算数都是对象,那么比较的是它们的引用值。

 

比较运算时会试图将对象转换为数字或字符串

 

In运算符

字符串 in 对象

hasOwnProperty

 

Typeof typeof O:返回字符串

基本类型,也区分对象和函数

typeof对未定义的变量运算时也显示undefinednull

 

InstanceofO instanceof F:调用F函数的[[HasInstance]]内部方法,该方法递归寻找对象O的原型链 让其与F.prototype属性比较如果相等就返回true

New

 

Delete

删除对象的属性,数组元素,隐式定义的变量。

Delete 运算符不会作用域原型链的属性

 

void

表达式返回undefined

3.   语句

with 语句用于设置代码在特定对象中的作用域。

它的语法:

with (expression) statement

例如:

var sMessage = "hello";

with(sMessage) {

  alert(toUpperCase()); //输出 "HELLO"

}

在这个例子中,with 语句用于字符串,所以在调用 toUpperCase() 方法时,解释程序将检查该方法是否是本地函数。如果不是,它将检查伪对象 sMessage,看它是否为该对象的方法。然后,alert 输出 "HELLO",因为解释程序找到了字符串 "hello" toUpperCase() 方法。

提示:with 语句是运行缓慢的代码块,尤其是在已设置了属性值时。大多数情况下,如果可能,最好避免使用它。

4.   函数和对象

 

function fun(){};//function 语句

var fun = new Function(arg1,arg2,…..,funcBody)//构造函数

var fun = function(){};//函数直接量

 

调用对象添加到作用域链头

Arguments参数:参数列表,是调用对象的一个属性,是一个对象(非数组)拥有length及“0”“1等属性。

arguments.length实际的参数个数。fun.length形参的个数。

callee属性

 

函数的属性和方法

length属性

prototype 原型属性

fun.callobj,a,bapplyobj,arr

函数的自定义属性 函数的静态变量

 

方法调用:函数时一个对象的属性时,称之为方法。object.fun();会将object绑定this关键字。

返回:return用于返回值,若没有指定则返回undefined

 

构造器调用模式:new fun();

 

Apply调用模式:fun.apply(obj,arguments_array),obj绑定this,调用fun函数。

 

内部函数中的调用(局部函数变量)是函数调用:其中的关键字this绑定到全局变量。作者称其为一个设计上的错误,它应该绑定外部函数中的this

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值