主页

JavaScript 数组

JavaScript 中数组的作用是:使用单独的变量名来存储一系列的值。即当我们需要存储一系列值的时候,如果对每个值都使用单个变量来进行存储就会显得很麻烦,如果能有一种存储结构能够通过一个名称就将一系列的值关联起来,那就很方便了,数组就是这样的存储结构。 1. 基本概念 数组:存储一系列值的结构。 元素:数组中这一系列值的每一个具体值。 下标:数组中每个元素的编号,下标从0开始实现编号。 长度:数组中元素的个数,元素下标是从 0 开始编号,到 “数组长度值 - 1” 止。 2. 创建数组 要使用数组的存储结构,我们可以通过以下几种方式创建数组: 1 2 3 4 var arrayObj1 = new Array(); // 创建一个数组对象 var arrayObj2 ...

阅读更多

JavaScript 流程控制语句

JavaScript 程序是由若干个语句组成的,每一个语句以分号作为结束符,语句可以很简单,也可以很复杂。我们将改变程序正常流程的语句称为控制语句,流程控制是用来控制程序中各语句执行顺序的结构,是程序中基本却又非常关键的部分。流程控制语句可以把单个语句组合成有意义的、能完成一定功能的小逻辑模块。 流程控制语句主要分为以下几类: 顺序结构 选择结构 循环结构 跳转语句 1. 顺序结构 JavaScript 语言中,顺序结构是最简单的逻辑结构。有这些特点:所有语句按照先后顺序依次执行,每一条语句只执行一遍,不重复执行,也没有语句不执行。在此不赘述了。 2. 选择结构 当在执行过程中需要满足一定的条件才去执行语句时,而不满足条件则不执行语句时,我们可以使用选择...

阅读更多

JavaScript 执行顺序

我们都知道,JavaScript 是一种描述型脚本语言,它不同于 Java 或 C# 等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行。如果你不能了解浏览器是如何工作的,不能了解 JavaScript 的执行顺序,那你就犹如伯乐驾驭不了千里马。 1. 术语 在了解 JavaScript 执行顺序之前,我们先来认识几个重要的术语: 1.1 代码块 JavaScript 中的代码块是指由 <script> 标签分隔的代码段。JavaScript 是按照代码块来进行编译和执行的,代码块之间相互独立的,但是变量和函数可以共享。举个粟子: 1 2 3 4 5 6 7 8 9 10 11 12 <script type="text/javasc...

阅读更多

浏览器是如何工作的?

0. 为什么要了解浏览器是如何工作的 想要写出一个最佳实践的页面,要实现性能优化,就要好好了解了解浏览器的工作原理。 了解浏览器如何进行加载,可以在引用外部样式表文件、外部 JavaScript 文件时,将他们放到合适的位置,使浏览器以最快的速度及合理的顺序将文件加载完毕。 了解浏览器如何进行解析,可以在构建 DOM 结构,组织 CSS 选择器时,选择最优的写法,提高浏览器的解析效率。 了解浏览器如何进行渲染,明白渲染的过程,在设置元素属性,编写 JavaScript 文件时,可以减少 “reflow” “repaint” 的消耗。 1. 浏览器的主要功能及构成 浏览器的主要功能 是将用户选择的 web 资源呈现出来,它需要从服务器请求资源,并将其显示在浏览器窗...

阅读更多

【翻译】JavaScript Scoping and Hoisting

原文地址:http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html 你知道下面这段 JavaScript 代码执行后会 alert 输出什么值吗? 1 2 3 4 5 6 7 8 var foo = 1; function bar() { if (!foo) { var foo = 10; } alert(foo); } bar(); 如果答案是 “10” 令你感到惊讶的话,那么下面这个会让你更加困惑: 1 2 3 4 5 6 7 8 var a = 1; function b() { a = 10; return; function a() {} } b(); alert(a); ...

阅读更多

JavaScript 函数之递归

所谓递归,简单来说就是在函数内部调用函数自身。 我们常见到的计算阶乘、斐波那契数列就可以使用递归来完成。 递归需要程序在执行过程中不断调用自身,当然也必须要有一个明确的结束条件,不然就停不下来了。现在就简单的实现一下递归的阶乘: 1 2 3 4 5 function factorial(n){ if (n <= 1) return 1; return n * factorial(n - 1); } 使用三目运算符优化一下代码: 1 2 3 function factorial(n) { return n <= 1 ? 1 : n * factorial(n - 1); } 这个示例中,当满足 n <= 1 这个条件时,固定返回数值 1,这就是...

阅读更多

JavaScript 函数入门

0. 入门概述 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。 在很多传统语言(C/C++/Java/C#等)中,函数都是作为一个二等公民存在,你只能用语言的关键字声明一个函数然后调用它,如果需要把函数作为参数传给另一个函数,或是赋值给一个本地变量,又或是作为返回值,就需要通过函数指针((function pointer)、代理(delegate)等特殊的方式周折一番。 而在 JavaScript 世界中函数却是一等公民,它不仅拥有一切传统函数的使用方式(声明和调用),而且可以做到像简单值一样赋值、传参、返回,这样的函数也称之为第一级函数(First-class Function)。不仅如此,JavaScript 中的函数还充当了类的构造函数的作用,同时又是一个 F...

阅读更多

JavaScript 中 == 与 === 的区别

基本情况 == 表示等同比较,=== 表示恒等比较。 ==:两边值类型不同的时候,要先进行类型转换,再比较。 ===:不做类型转换,类型不同的一定不等。 详细说明 先说 == 我在JavaScript 数据类型一文中最后关于“自动类型转换”时已经有说明,== 的比较主要是根据以下规则进行的: 如果两个值类型相同,则进行 ===(恒等)比较。 如果两个值类型不同,但他们可能相等。根据下面规则进行自动类型转换再比较: 如果一个是 null、一个是 undefined,那么相等。 如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。 如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换...

阅读更多

JavaScript数据类型

JavaScript 中有5种简单数据类型(也称为基本数据类型、原始数据类型):undefined、null、boolean、number 和 string。还有1种复杂数据类型(也称为引用数据类型):object,object 本质上是由一组无序的名值对组成的。 1. 基本数据类型 undefined undefined 类型有且只有一个值,即特殊的 undefined。在使用 var 声明变量但未对其加以初始化时,这个变量的值就是 undefined,例如: 1 2 var message; alert(message); // undefined 任何没有被赋值的变量都是 undefined 值。 null null 类型是第二个有且只有一个值的数据类型,这个特殊...

阅读更多

【转】详图实证:谈JavaScript的语源问题

【本文发表于《程序员》2011.03期】 有两个错误的观点,其一是“JavaScript在语源上继承自Cmm”。这个错误的观点主要的来自于以下途径(部分): 2002年10月7日的《Wired Magazine(连线杂志)》的一份名为“Mother Tongues”的图; O’Reilly公布的“The History of Programming Languages图; Levenez.com公布的“Computer Language History”; …… 第二个错误的观点,即“Nombas公司的Espresso Pages(浓咖啡版网页)以及其内置的脚本(CEnvi,Cmm语言的开发环境)是WWW上首次使用的脚本语言”。这个错误的观点主要来自于: ...

阅读更多

JavaScript的历史

一、JavaScript的诞生 JavaScript因为互联网而生,紧随着浏览器的出现而问世。回顾它的历史,就要从浏览器的历史讲起。 1990年底,欧洲核能研究组织(CERN)科学家Tim Berners-Lee,在全世界最大的电脑网络——互联网的基础上,发明了万维网(World Wide Web),从此可以在网上浏览网页文件。最早的网页只能在操作系统的终端里浏览,也就是说只能使用命令行操作,网页都是在字符窗口中显示,这当然非常不方便。 1992年底,美国国家超级电脑应用中心(NCSA)开始开发一个独立的浏览器,叫做Mosaic。这是人类历史上第一个浏览器,从此网页可以在图形界面的窗口浏览。 1994年10月,NCSA的一个主要程序员Marc Andreessen联合风险投资家...

阅读更多

Git 使用教程

一、什么是 Git Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 是一个开源的分布式版本控制系统,用于敏捷高效的处理任何项目的版本问题。与常用的版本控制工具 CVS、SVN 等不同,Git 采用了分布式版本库的方式,不必服务器端软件支持。可以说 Git 是目前世界上最先进的分布式版本控制系统。 二、关于项目版本管理 项目在开发的过程中,经常会出现多人分工协作进行项目开发并整合的过程,所以经常会出现一些协作开发时同步的问题,同时存在项目整体进度的控制和管理的问题,所以在程序开发行业衍生出来了版本管理工具。 版本管理工具,首先是一个内容管理工具,可以将项目的内容信息存放在版本管理服务器上方便项目组人员进行...

阅读更多