`
eyec
  • 浏览: 9739 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

(转)Javascript null undefined和if表达式

阅读更多
javascript虽然只是一个脚本语言,但是它完全也是一个编程语言需要我们来学习一下,下面是转载的篇关于javascript中常用的编程知识。

1.null 与 undefined

* 从一个对象中获取某个属性,如果该对象及其 prototype 链 中的对象都没有该属性的时候,该属性的值为 undefined 。
* 一个 function 如果没有显式的通过 return 来返回值给其调用者的话,其返回值就是 undefined 。有一个特例就是在使用new的时候。
* JavaScript 中的 function 可以声明任意个形式参数,当该 function 实际被调用的时候,传入的参数的个数如果小于声明的形式参数,那么多余的形式参数的值为 undefined 。
* null为空对象,注意与空的对象({})的区别。


2.if 表达式

* Null总是为假(false)
* Undefined总是为假(false)
* Number+0,-0 或是 NaN 的时候为假,其它值为真
* String空字符串的时候为假,其它值为真
* Object总是为真(true)

3.Array

JavaScript 中的数组(Array)和通常的编程语言,如 Java 或是 C/C++ 中的有很大不同。在 JavaScript 中的对象就是一个无序的关联数组,而 Array 正是利用 JavaScript 中对象的这种特性来实现的。在 JavaScript 中,Array 其实就是一个对象,只不过它的属性名是整数,另外有许多额外的属性(如 length)和方法(如 splice)等方便地操作数组。

4.new 运算符

JavaScript 中并没有 Java 中的类(class)的概念,而是采用构造器(constructor)的方式来创建对象。在 new 表达式中使用构造器就可以创建新的对象。由构造器创建出来的对象有一个隐含的引用指向该构造器的 prototype 。


5.prototype

prototype是javascript原型继承的核心概念,大家一定在某个javascript类库里面见过 Array.prototype.push.call()这样的用法,所以归根结底prototype是一个对象。我们可以通过 prototype给native class添加一些有用的方法,也可以通过prototype实现继承。如果对prototype比较感兴趣,可以在ff里面通过__proto__来访 问指定对象的原型链。

6.scope chain

执行上下文(execution context)是 ECMAScript 规范中用来描述 JavaScript 代码执行的抽象概念。所有的 JavaScript 代码都是在某个执行上下文中运行的。在当前执行上下文中调用 function 的时候,会进入一个新的执行上下文。当该 function 调用结束的时候,会返回到原来的执行上下文中。如果 function 调用过程中抛出异常,并没有被捕获的话,有可能从多个执行上下文中退出。在 function 调用过程,也可能调用其它的 function,从而进入新的执行上下文。由此形成一个执行上下文栈。

注:如果对scope chain比较感兴趣,可以在ff里面通过__parent__属性来访问函数的scope chain,比较遗憾的是ff的js引擎SpiderMonkey对这个属性的支持不是很完美,出现内部函数的时候会出错,所以建议用Rhino (http://developer.mozilla.org/en/docs/Rhino)。

注:这里需要提的是注意函数表达式和函数声明对scope chain的影响。


7.closure

闭包也算是js比较常用的特色功能了,一般我们在java里面执行完毕的一个函数,内部变量将全部被回收,但在javascript中,我们可以通过某些方法,使执行完的函数的内部变量依然存在,并且可访问,这样就构成了一个闭包。
当然,什么东西都有两面性,闭包给我们带来好处的时候,也会带来不少的麻烦,比如一个不留神就产生了内存的泄漏,所以我们需要合理的应用这些技术。如果要 深入学习闭包,建议去看几个js library(prototype,jquery,mootools),里面有一些很经典的闭包应用,比如bind方法等,这里就不多赘述。

原文地址 http://it.dianping.com/javascript-programing-basic.htm
分享到:
评论

相关推荐

    javascript基础语法和正则表达式

    - **数据类型**: JavaScript中有五种基本的数据类型(Undefined、Null、Boolean、Number 和 String)和一种复合数据类型——Object。 - 示例: ```javascript var name = "张三"; // 字符串类型 var age = 25; /...

    JavaScript null和undefined区别分析

    一时间不好回答,特别是undefined,因为这涉及到undefined的实现... null 参与数值运算时其值会自动转换为 0 ,因此,下列表达式计算后会得到正确的数值: 表达式:123 + null 结果值:123 表达式:123 * null 结果

    JavaScript基础语法之js表达式_.docx

    3. 字面量引用:包括`null`、`undefined`、布尔值`true`和`false`、数字(`1`)、字符串(`'abc'`)以及正则表达式(`/pattern/`)。 4. 数组初始化:如`[]`、`[1, 2, 3]`,用于创建数组。 5. 对象初始化:如`{}`、`...

    Javascript中的false、0、null、undefined和空字符串对象[归类].pdf

    在JavaScript中,`false`、`0`、`null`、`undefined`和空字符串`""`是五个特殊的值,它们在编程中扮演着不同的角色。理解它们的类型、等价性和在条件语句中的行为是至关重要的。 首先,让我们看看它们的类型: - `...

    JavaScript中的null和undefined用法解析

    在JavaScript编程语言中,`null` 和 `undefined` 是两个重要的概念,它们都用来表示某种“不存在”或“没有”的状态,但它们之间存在着微妙的差异。了解这些差异对于编写健壮的JavaScript代码至关重要。 首先,`...

    JavaScript判断undefined类型的正确方法

    其次,使用相等比较符无法区分undefined和null,因为null在JavaScript中也被认为是相等于undefined的。 为了准确判断一个变量是否是undefined,我们需要使用到typeof操作符。typeof操作符能够返回一个表示变量类型...

    javascript表达式和运算符详解.docx

    javascript 表达式和运算符详解 javascript 表达式是指能计算出值得任何可用程序单元。它是一种短语,javascript 解释器用来产生一个值。javascript 表达式可以分为六种类型:原始表达式、初始化表达式、函数表达式...

    JavaScript中null与undefined分析

    在JavaScript编程语言中,`null`和`undefined`是两个非常基础且重要的概念。虽然它们经常被用来表示“无值”或“空值”,但它们之间还是存在着一些关键性的区别。本文将详细探讨这两个概念的含义、用法以及它们之间...

    JavaScript中的null和undefined解析

    在JavaScript开发中,被人问到:null与undefined到底有啥区别? 一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理。于是,细想之后,写下本文,请各位大侠拍砖。 总所周知:null == undefined ...

    JavaScript中的null和undefined区别介绍

    JavaScript中存在2个代表信息不存在的特殊值:null和undefined。个人认为可以从以下角度来理解这两个特殊值之间的区别: 1.null代表有存储信息的容器(比如之前被赋过值的变量),但该容器中的内容为空。 2.undefined...

    javascript(含正则表达式参考) 5.5 参考文档

    JavaScript的基础语法包括变量声明(`var`, `let`, `const`),数据类型(如`null`, `undefined`, `boolean`, `number`, `string`, `object`,以及ES6引入的`symbol`和`bigint`),操作符(算术、比较、逻辑、赋值等...

    javascript正则表达式全解析文档

    ### JavaScript正则表达式全解析 #### 正则表达式的定义与使用 在JavaScript中,正则表达式是一种用于处理字符串的强大工具。它允许我们执行复杂的字符串搜索和替换操作。正则表达式对象可以通过两种方式创建:一...

    javascrit中undefined和null的区别详解.docx

    ### JavaScript中undefined与null的区别详解 #### 一、概述 在JavaScript编程中,`undefined`与`null`是非常常见的两种基本数据类型。虽然它们都表示某种形式的“无”或“空”,但在实际使用中两者有着本质的区别...

    JavaScript基础语法之js表达式

    字面量是直接在代码中给出的值,包括null、undefined、布尔值、数字、字符串和正则表达式。标识符引用可以是变量名、函数名、属性名等。 例如,使用this关键字可以返回当前对象的上下文;标识符如i和sum可以返回...

    JavaScript中猎取纯正的undefined的方法_.docx

    在JavaScript编程中,正确理解和获取`undefined`值是至关重要的,因为这直接影响到代码的健壮性和可维护性。在某些情况下,我们可能需要确保一个变量确实为`undefined`,而不是其他任何值,以进行有效的条件检查。...

    JavaScript正则表达式学习资料笔记

    ### JavaScript正则表达式详解 #### 一、正则表达式的创建 正则表达式是JavaScript中用于处理字符串的强大工具之一。它可以帮助我们查找、替换或提取文本中的特定模式。在JavaScript中创建正则表达式有两种基本...

    javascript属性访问表达式用法分析.docx

    1. **类型错误**:如果尝试访问`null`或`undefined`的属性,JavaScript会抛出一个类型错误。 ```javascript const obj = null; console.log(obj.name); // 抛出 TypeError: Cannot read properties of null ...

    Javascript核心读书有感之表达式和运算符

    此外,JavaScript中的保留字如this、null和undefined也是原始表达式的组成部分。变量名同样属于原始表达式,其值取决于之前对变量的赋值。 接下来,我们来谈谈数组和对象的初始化表达式。数组初始化表达式通过一...

    确保正确使用三元条件表达式的ESLint规则

    5. **与`null`和`undefined`的比较**:在JavaScript中,`null`和`undefined`被视为 falsy 值。直接用三元条件表达式判断它们可能导致混淆。插件可能会建议你使用明确的`===`或`!==`操作符。 6. **保持一致的返回...

Global site tag (gtag.js) - Google Analytics