javascript函数

来源:互联网 发布:大众排放门 知乎 编辑:程序博客网 时间:2024/05/16 02:29

ECMAScript 是 javascript 的官方命名。他们有不同名字的原因是因为“Java”已经被注册为商标(属于 Oracle)。目前,只有Mozilla被正式允许使用“JavaScript”名称,因为很久以前他们等到一份许可。因此,开放的语言标准拥有不同的 名字。一般来讲遵循以下应用规范: 编程语言称为JavaScript语言标准称为ECMAScript

原始类型JavaScript 定义了不同值类型

  • 原始值包括 number、string、boolean、null 和 undefined
  • 所有其他的都是对象

两者之间的主要区别是,如何比较值:每一个对象都有独一无二的标示,并且仅仅和自己相等。

var obj1={}; var obj2={}; obj1===obj2? false ;obj1 === obj1 true

相反,所有原始类型只要值内容相等即可认为相等

var str="p"; var str2="p"; str1===str2? true;

下面的全是原始类型值(简称:原始值):

  • 布尔类型:true,false
  • 数字类型:1736,1.351
  • 字符串类型: ‘abc’,”abc”
  • 两个“无值(non-values)”:undefined,null原始值的特征:
  • 值比较的时候,内容比较。
  • 值的属性不可改变,不可新增或者移除属性

var str="p"; strl.m = "m" ==> undefined

Object所有非原始类型,最常见的几种对象创建方式

  • 普通对象,通过对象字面量创建(Object) {firstName : "z3",lastName : "li4"}
  • 数组对象,通过数组字面量创建(Array) Array类型判断["a","b","c"]
  • 正则对象,通过正则表达式字面量创建(RegExp) /^a$/对象的特征

  • 比较的是引用:比较标示符,每个引用有自己的标示符

var p = {},var m={}; p===m ==>false; var p = {},m; m=p; p===m ==>true- 属性可以随意更改var p = {}; p.abc="123" ; alert(p.abc) ==> "123;

NULL 和 Undefined JavaScript 里面有两个“无值(non-values)”: null 和 undefined

  • undefined 的含义是 no-value(无值) 未初始化的变量是 undefined

var p ; p==> undefined;

读取不存在的属性

var p = {}; alert(p.abc) ==> undefined;

未传递的参数

function f(p){return x;} f() ==> undefined;

  • null的意思是“没有对象(no object)”。它被用来表示对象的无值(参数,链上的对象等)。

null 和 undefined 都没有任何属性(包括toString())

通常情况下你应该把undefined和null看成是等价的,如果他们代表相同意义的无值的话。检查他们的一种方式是通过严格比较:

if (x === undefined || x === null) { ... }

另一种在实际中使用的方法是认为undefined 和 null 都是false:

if (!x) { ... }

警告:false,0,NaN 和 “” 都被当作false。

真值和假值(Truthy and falsy) 每当JavaScript希望一个布尔值时(例如:if语句的条件),可以使用任何值。它将被理解(转换)为true或false。下面的值被理解为false:

undefined, null布尔: false数字: -0, NaN字符串: ‘’所有其他值被认为true。被理解为false的值成为假值(falsy),被理解为true的值成为真值(truthy)。可以使用Boolean作为函数测试值被理解为什么。

Boolean(undefined) false > Boolean(0) false > Boolean(3) true

通过typeof 和 instanceof 将值分类有两个操作符可以用来将值分类:typeof 主要用来操作原始值,instanceof 主要用来造作对象。typeof 使用如下:

typeof value

他返回描述value "类型" 的一个字符串。例如:

typeof 'abc' ==> 'string'

下面列出了所有typeof的结果 操作数 结果undefined 'undefined' null 'object' Boolean value 'boolean' Number value 'number' String value 'string' Function 'function' All other value 'object'

有两个需要注意的地方

  • 函数的类型是“function”而不是“object”。鉴于函数(类型为“function”)是对象(类型是对象)的子类型,这不是一个错误。
  • null的类型是“object”。这是一个bug,但从没被修复,因为修复后会破坏现有的代码。

instanceof 使用如下:

value instanceof Constr

如果 value 是一个对象,并且value 是由构造函数Constr创建的。例如:

var b = new Bar(); //通过Bar 构造出来的对象 > b instanceof Bar true > {} instanceof Object true > [] instanceof Array true

0 0
原创粉丝点击