欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaScript高级程序设计(第三版)学习笔记(三) JavaScript语法 草稿

程序员文章站 2022-07-12 18:12:35
...

一、语法特性

 程序是人脑思维实现和机器重复劳动的结合体,本质是数据和算法构建。
 JavaScript语法参考了c、c++、java等语言的特点,一门高级编程语言(类自然语言)由变量、关键字、操作符、流控制语句、内置对象等基本元素构成。

1、标识符
 高级语言一般都用标识符的来定义变量、关键字、操作符、语句等,就像人类现实中给人事物起名字,标识符可以有英文、数字、下划线_、美元符号$组成,第一个字符不能为数值,有可能避免解析时与实际数字混淆。
 标识符一般用驼峰命名法,即首个单词全部小写,从第二个开始首字母大写,比如:

doSomethingImportant

关键字:指有特殊含义的标识符,比如定义变量用var num,把num作为一个变量来处理,而如果用function num,则num是一个函数名,浏览器对两者的解析方式是不同的。简单来说JavaScript程序由标识符和操作符构成。

2、区分大小写
 不光指变量,如var a和 var A,包括操作符、函数,比如操作符typeof,如果用成typeOf则提示语法错误(未定义);再比如Number()函数,写成number()也是同样的道理。

alert(typeOf 123);//语法错误,应为typeof 123
alert(number("123"));//语法错误,应为Number(“123”)

3、注释

单行:两个反斜杠 //单行注释
块级(多行):开始一个反斜杠加*号(/*),结束是一个*加反斜杠(*/),但往往为了代码的可读(醒目)性,一般在每行前加入*。

/*
 * 块级注释
 * 除开始和结束行,每一行前都加入*,便于阅读。
 */

二、数据类型

JavaScript是弱数据类型,是指定义变量时无需指定该变量的具体类型,虽然更方便的定义变量,但在使用时更要清楚变量存放数据的类型,否则程序会引起无法预知的错误.

语法:关键词var + 变量名,如var num;

JavaScript的数据类型:
基本类型1:

1、 Number(数值)如整数 123 ;浮点型(双精度度)123.45。
重点:无效值(NaN)和无限值(Infinity)
如果一个算数运算得到一个非数值,一般编程语言直接提示语法错误,系统停止运行。
但JS会返回一个无效值NaN,这样即提示程序员无效数值,又可以保证程序继续运行,比如:

    alert(Number("abc"));
    alert(0/0);

也可以用函数isNaN()检测数据是否为无效数:

alert(isNaN(NaN));

如果运算结果是一个超出数值最大值(Number.MAX_VALUE),则返回Infinity表示,负数用-Infinity表示,也可以用函数isInfinity()检测,如

alert(isInfinity(1/0)); 

2. String(字符串)如“abc”、“a”、“123”、“var”,用双引号包含内容,也可以用单引号。

    alert("123");
    alert("var");
    alert('var');

3、 Boolean(布尔值),只有两个值,即true和false。

基本类型2:

4、 UndefinedNull
Undefined和Null类型值只有一个,分别为undefined、null。
undefined为声明但未初始化的变量,但使用未声明的变量属于语法。
var a;
alert(a);
alert(b);
null为空指针对象。

定义一个变量时,可以不初始化,但直接使用一般编程语言就属于语法错误,但JS中则为undefined,不会终止程序的继续运行。所以如果为了后续存储对象,可以在初始化时赋值null即空指针对象,这样在使用变量时:
var obj = null;

if(obj != null){
//
}
而undefined一般不需要显时赋值,主要用作判断变量是否初始化值。这两种类型提供了语法的精准性,但也要付出更多代码来处理这两种情况,另外undefined派生之null,所以两者相等返回true。
alert(undefined == null);
引用类型
5、 Object(对象),是包含无序键值对的结构,创建方式如下:
var obj = new Object();//可以省略(),但不建议。
三、类型转换
上面几种数据类型在涉及到操作符运算、流控制语言需要进行数据的强制或自动转换
转换函数:
1、数值Number()、parseInt()、parseFloat()。
区别:
对于字符串,遇到数据中包含无效数值,Number()返回NaN,而parseInt则从开始有效数值截取到无效数值前。
对于布尔值,Number(true)等于1,反之Number(false)则为0
parseInt()可以指定基数,一般都指定为10进制
parseInt(“0123abc”,10);
null、undefined都为NaN

操作符(自动转换)
一元符号:+、-
二元符号:+、-
一元符号:++、–
先调用Number()函数把操作数转换为数值

2、字符串 toString()、String()
区别:null和undefined无法调用toString()方法,但String()函数可以把任何数据转换为字符串,对象则调用valueOf()返回空字符,则继续调用toString()方法。

操作符:
+
当一个表达式中包含字符串时,系统会把其它数据转换为字符串,比如
alert(4 + “1”);

3、布尔值Boolean()
可以把任何值转换为布尔值。

操作符:
逻辑符号 && ||
流程控制语句 if、while、switch等
先调用Boolean()函数把数值转换为布尔值。

四、操作符
算数:一元:+ - ++ – 二元:+ - * / %
逻辑:与&& 、或||、非 !
在非数值情况
与:第一个对象为false,则取第一个原值;否则取第二个对象。
或:
比较: > < >= <= == != === !==
等于与恒等于的区别,前者进行类型转换,后者原型比较。

五、语法
If (3 == 4){

}else if {

}
switch(){
Case: ; break
Default:
}

do{
}while()
While(){
}

For(var i; i<;i++){
}

六、函数
封装代码块、随时随地调用
实参与形参的数据可以不一致,因为实参是通过无限长度的数组arguments来接收的。