JavaScript高级程序设计 第三章 --- 基本概念

  • JavaScript高级程序设计 第三章 基本概念
    • 语法
      • 区分大小写
      • 标识符
      • 注释
    • 关键字和保留字
      • 关键字
      • 保留字
    • 变量
    • 数据类型
      • typeof 操作符
      • Undefined
      • Null类型
      • Boolean
      • Number类型
      • String类型
      • Object类型
    • 操作符
      • 一元操作符
      • 位操作符
      • 布尔操作符
      • 乘性操作符
      • 加性操作符
      • 关系操作符
      • 相等操作符
      • 条件操作符
      • 赋值操作符
      • 逗号操作符
    • 语句
      • if 语句
      • do-while 语句
      • while 语句
      • for 语句
      • for-in 语句
      • label语句
      • break 和 continue语句
      • with语句
      • switch语句
    • 函数
    • 小结

JavaScript高级程序设计 第三章 — 基本概念


语法

区分大小写

ECMAScript中的一切(变量、函数名和操作符)都区分大小写。
比如:变量名test和变量Test分别表示不同的变量。

标识符

标识符:指变量、函数、属性的名字,或者函数的参数。一般采用驼峰式。例如:myCar。

  • 第一个字符必须是一个字符、下划线(_)、或美元符号($)
  • 其它字符可以是字符、下划线、美元或数字
    注意:不能把关键字、保留字、true、false和null用作标识符。

注释

单行注释:

//单行注释
块级注释:
/*
*   这是一个多行
*   (块级)注释
*/

关键字和保留字

ECMA-262描述了一组特定用途的*关键字*,可用于表示控制语句的开始或者结束,或用于执行*特定操作*。

关键字

关键字
break do instanceof typeof
case else new var
catch finally return void
continue for switch while
debugger function this with
default if throw
delete in try

保留字

保留字
abstract enum int short
boolean export interface static
byte extends long super
synchronized final native char
class float package throws
const goto private transient
implements double import volatile
protected public

变量

ECMAScript的变量是松散类型的,可以保存任何类型的数据。
    function test(){
        var message ="hi";      //局部变量
    }
    test();
    alert(message);     //错误!

注意: 在函数中使用var定义一个变量,这个变量在函数退出后就会被销毁。

    function test(){
         message ="hi";      //全局变量
    }
    test();
    alert(message);     //  "hi"

虽然省略var可以定义全局变量,但不推荐,维护很麻烦。


数据类型

ECMAScript中5种简单的数据类型:Undefined、Null、Boolean、Number、String。还有一种复杂数据类型 — Object。

typeof 操作符

typeof操作符可能返回以下某个字符串:

  • “undefined”—– 未定义
  • “boolean”—– 布尔型
  • “string”—– 字符串
  • “number”—– 数值
  • “object”—– 对象或者null
  • “function”—– 函数

Undefined

未初始化的变量会被自动赋予undefined

var message;    //这个变量声明后默认取得undefined值
//下面这个变量并没有声明
// var age

alert(message); //  "undefined"
alert(age);     //  产生错误
alert(typeof message);  // "undefined"
alert(typeof age);      // "undefined"

Null类型

Null值表示一个空对象,typeof检测null值时返回“object”。

Boolean

该类型只有两个字面值:true和false。各数据类型及其对应的转换规则:

数据类型 转换成true 转换成false
Boolean true false
String 任何非空字符串 “”(空字符串)
Number 任何非零数值 0和NaN
Object 任何对象 null

Number类型

  • 浮点数值
var floatNum1 =1.1;
var floatNum2 =3.125e7  //31250000
    // e表示的数值等于e前面的数值乘以10的指数次幂
  • 数值范围
    最小的数值保存在:Number.MIN_VALUE中
    最大的数值保存在:Number.MAX_VALUE中

  • NaN
    NaN,即非数值(Not a Number)

  • 数值转换
    有3个函数可以把非数值转换成数值:Number()、parseInt()、parseFloat()

var num1 = Number("Hello world !");     //NaN
var num2 = Number("");                  //0
var num3 = Number("000011");            //11
var num1 = Number(true);                //1

parseInt() — 返回整数
第一个字符不是数字字符或者负号,返回NaN。
第一个字符是数字字符,继续解析,直到遇到一个非数字字符。
字符串一“0x”开头且后跟数字字符,解析成十六进制整数。

var num1 = parseInt("");            //NaN
var num2 = parseInt("1234blue");        //1234
var num3 = parseInt("0xA");         //10(十六进制)
var num4 = parseInt("10",2);        //2(按二进制解析)
var num5 = parseInt("10",8);        //8(按八进制解析)
var num6 = parseInt("10",10);       //10(按十进制解析)

parseFloat() — 返回小数

String类型

toString方法
数值、布尔值、对象和字符串值都有toString()方法。但null和undefined没有。

var num = 10;
alert(num.toString());      //"10"
alert(num.toString(2));     //"1010"(二进制)
alert(num.toString(8));     //"12"(八进制)
alert(num.toString(16));    //"a"(十六进制)

String()
如果有toString()方法,则调用该方法并返回结果;
如果值为null,返回”null”;
如果值为undefined,返回“undefined”;

Object类型

对象其实就是一组数据和功能的集合,对象可以通过 new 操作符后跟要创建的对象类型的名称来创建。

var o = new Object();

操作符

用于操作数据值的操作符,包括算数操作符、位操作符、关系操作符和相等操作符。

一元操作符

递增操作符 ++
递减操作符 - -

位操作符 *

布尔操作符

布尔操作符有3个:非、与、或。

  • 逻辑非 (!)
alert(!false);      // true
alert(!"blue");     // false
alert(!0);          // true
alert(!"NaN");      // true
alert(!"");         // true
alert(!12345);      // false

同时使用两个逻辑非(!!),实际会模拟Boolean()转型函数的行为.

  • 逻辑与(&&)

  • 逻辑或(||)

乘性操作符

  • 乘法(*)
  • 除法(/)
  • 求模(%)
var result = 26 % 5 ;   // 等于1

加性操作符

  • 加法(+)
  • 减法(-)

关系操作符

小于、大于、小于等于和大于等于。

相等操作符

  • 相等(==)
  • 不等(!=)

null == undefined 返回 true

  • 全等(===)
    全等:表示未经转换就相等

  • 不全等(!==)
    不全等:表示未转换就不相等

条件操作符

比如:
variable = boolean_expression ? true_value : false_value;

这行代码是基于 boolean_expression 求值的结果,决定给variable赋什么值。
值为true,变量 variable赋 true_value值
值为false,变量 variable赋 false_value值

代码:

var max = (num1 > num2) ? num1 : num2;
// max 会保存一个最大值

赋值操作符

  • 赋值(=)
  • 乘/赋值(*=)
  • 除/赋值(/=)
  • 模/赋值(%=)
  • 加/赋值(+=)
  • 减/赋值(-=)
var num =10 ;
num+= 10 ;  // num = num + 10

逗号操作符

使用逗号操作符可以在一条语句中执行多个操作:

var num1=1, num2=2, num=3 ;

语句

if 语句

if 语句的语法:
if (condition) statement1 else statement2

if(i>25)
    alert("大于25.");
else{
    alert("小于等于25.");    
}

if (condition1) statement1 else if (condition2) statement2 else statement3

if(i>25){
    alert("大于25.");
}else if(i<25){
    alert("小于25.");    
} else {
    alert("等于25.");
}

do-while 语句

do-while 后循环语句,先执行循环体中代码,再测试出口条件。

do{
statement
} while(expression);
示例:

var i = 0;
do{
    i+=2;
} while (i < 10);
alert(i);

while 语句

var i = 0;
while( i<10 ){
    i += 2 ;
}

for 语句

var count = 10 ;
for( var i= 0; ii++){
    alert(i);
}

for-in 语句

for-in 语句是一种精准的迭代语句,可以用来枚举对象的属性。以下是语法:
for ( property in expression) statement

for (var propName in window){
    document.write(proName);
}

label语句*

break 和 continue语句

break和continue语句用于循环中精确地控制代码的执行。

break语句:会立即退出循环,强制执行循环后面的语句
continue语句:虽然也是理科退出循环,但退出循环会从循环顶部继续执行。

with语句

with语句的作用是将代码的作用域设置到一个特定对象中
比如:
定义with主要是为了简化多次编写同一个对象。

var qs = location.search.substring(1);
var hostName = location.hostname;
var url =location.href;

上面几行都包含location对象,使用with可以改成:

with(location){
    var qs = search.substring(1);
    var hostName = hostname;
    var url = href;
}

switch语句

switch语句是一种普遍使用的流程控制语句。
比如:

switch (expression){
    case value : statement
        break;
    case value : statement
        break;
    case value : statement
        break;
    default : statement
}

switch语句中的每一种情形(case)的含义是:”如果表达式等于这个值(value),则执行后面的语句(statement)“。break 回导致代码执行跳出 switch语句。最后 default关键字表示不匹配前面任意一种情况,执行代码(相当于else)。

switch语句中可以使用任何数据类型,无论字符串,还是对象都可以。
注意: switch语句在比较值是使用的是全等操作符,不会发生类型转换。

比如:字符串

switch ("hello world") {
    case "hello" + " world":
        alert("Greeting was found.");
        break;
    default:
        alert("Closing was found.");
}

或者:

var num = 25;
switch (true){
    case num < 0:
        alert("less than 0");
    case num > 0:
        alert("more than 0");
    ...
}

函数

函数的基本语法:
function functionName(arg0,arg1,…,argN){
statements
}

function sayHi(name,message){
    alert("Hello " + name + "," + message);
}

sayHi("Nicholas","how are you today?");

函数在执行完 return语句之后停止并立刻退出。因此,位于 return语句之后的任何代码都不会执行。例如:

function sum(num1,num2){
    return num1 + num2 ;
    alert("Hello world");      //永远不会执行
}

小结

  • 基本数据类型:Undefined、Null、Boolean、Number、String
  • Object类型,一种复杂的数据类型,该类型是这门语言所有对象的基础类型
  • 基本操作符:算数、布尔、关系、相等操作符及赋值操作符
  • 控制流程的语句:if 语句、for 语句、switch 语句
  • 函数参数是以一个包含零或多个值的数组形式传递的
  • 函数可以传递任意数量的参数,通过 arguments对象访问
  • 函数不能重载

你可能感兴趣的:(---,读书笔记)