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

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


语法

区分大小写

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

标识符

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

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

注释

单行注释:

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

关键字和保留字

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

关键字

关键字
breakdoinstanceoftypeof
caseelsenewvar
catchfinallyreturnvoid
continueforswitchwhile
debuggerfunctionthiswith
defaultifthrow
deleteintry

保留字

保留字
abstractenumintshort
booleanexportinterfacestatic
byteextendslongsuper
synchronizedfinalnativechar
classfloatpackagethrows
constgotoprivatetransient
implementsdoubleimportvolatile
protectedpublic

变量

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
Booleantruefalse
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; i<count ; i++){
    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对象访问
  • 函数不能重载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值