JavaScript入门

来源:互联网 发布:五轴联动数控机床编程 编辑:程序博客网 时间:2024/06/06 16:55

简介

JavaScript是一种动态语言,动态语言的变量和函数是不指定返回值类型的。
JavaScript中用于分隔语句的分号是可以省略的,因为换行时所省略的分号将被自动补全。不过一般不推荐这样的做法。
JavaScript区分大小写。关键字、标识符都必须采取一致的大小写形式。

输出函数

JavaScript在不同的环境下可以使用不同的输出函数,例如在浏览器可以使用alert()或document.write(),在FireBug或Node.js中可以使用console.log()。
var print = alert;var print = document.write;var print = console.log;// 使用print来输出信息:print(23); // 23

标识符

标识符就是一个名字,用来对变量或函数进行命名。或者用做代码中某些循环语句中的跳转位置的标记。标识符必须以字母、下划线或美元符$开头,后续可以使用字母、数字、下划线或美元符$。
严格地讲,标识符都是以Unicode字符所组成的单词,包括中文日文等,所以从语法上来说,是可以使用中文作为变量名以及函数名的。不过习惯中应该使用英文字符(区分大小写)、下划线(_)、美元符($)、和数字组成标识符(注意不能以数字开头)。

变量 var

变量使用var关键字进行声明,在JavaScript中,变量是没有类型的,但变量对应的值或对象,却有类型。例如:
var a;a = 4;a = "abc";var a, b, c = 30, d = "abc", e = true;


因为没有变量类型,所以对于同一个变量,既可以赋值为字符串,也可以赋值为数字。不过通常应避免这样使用。

被声明但未进行任何赋值的变量,其值为undefined。也就是说JavaScript中不存在未初始化变量一说,所有变量都初始化为undefined,undefined既是类型,也是此类型的唯一字面值。
var temp;print(temp);  // 输出:undefined

虽然变量不具有数据类型,但从概念上,变量可以分为基本数据类型变量和引用类型变量,基本数据类型变量直接保存有数值等类型的数据的值,而引用类型变量则保存有对象的引用。

变量也可以未经var声明而直接使用(限于写入,若读取未声明的变量则抛出ReferenceError异常),例如:
temp = 4;print(temp);

不通过var来声明而直接对变量赋值时,这样的变量称为隐式声明变量,隐式声明变量都是全局变量,即使在函数内部定义的隐式声明变量,也属于全局变量。
通过var声明的变量可称之为显式声明变量(全局或局部)。
var fun = function(){  temp = 3;}fun();print(temp);  // 3

本例中,函数中对temp进行了隐式声明并赋值,在调用函数之后,可以读取到这个temp变量,注意,必须是在调用过函数之后,才会访问到temp变量。因为只有在执行函数中的赋值语句后,才会定义全局变量temp。

如果在全局脚本或函数中使用var声明了一个变量,则这个变量在整个脚本或函数中都是可用的,只不过初始化操作会在声明处执行,所以在声明处之前的代码中,该变量的值将保持为undefined。
也就是说,变量在声明它们的脚本或函数中都是有定义的,变量声明语句会被“提前”到脚本或函数的顶部。但是初始化的操作则还是在原来var语句的位置执行。在声明语句之前变量的值是undefined。
// 函数function fun(){  print(temp);  var temp = 3;}fun();          // undefined// 函数function fun(){  print(temp);  temp = 3;}fun();          // 异常// 全局print(temp);      // undefinedvar temp = 3;// 全局print(temp);      // 异常temp = 3;function fun(){  temp = 3;}//print(temp);      // 异常fun();print(temp);        // 3

下面代码会运行失败:
print(temp);
因为temp并未声明,但下面代码可以运行成功:
print(temp);  // undefined
var temp = 3;

对于尚未声明过的变量,只能执行一项操作,即使用typeof操作符检测其数据类型(对未经声明的变量调用delete不会导致错误,但这样做没什么实际意义,而且在严格模式下确实会导致错误)。未声明的变量执行typeof操作符的结果为"undefined",与变量未初始化时的结果一样。
使用var声明的变量会自动被添加到最接近的环境中。在函数内部,最接近的环境就是函数的局部环境;在with语句中,最接近的环境是函数环境。如果初始化变量时没有使用var声明,该变量会自动被添加到全局环境。

常量 const

常量使用const而不是在var进行声明,其它方面与变量一样。
const TEMP = 4;print(TEMP);
定义常量时一般应该初始化,否则就像变量一样,会被默认初始化为undefined

typeof运算符

由于变量没有类型而变量所引用对象具有类型,所以有时候可以通过typeof运算符来查看变量引用对象的数据类型:
var myFunction = function (a, b, c){  print(a);  print(b);  print(c);};var site = { x: 100,  y: 30};var a = 4;var b = "abc";var c = true;var d = null;var e;print( typeof myFunction ); // functionprint( typeof site );       // object(值是对象或null)print( typeof a );          // numberprint( typeof b );          // stringprint( typeof c );          // booleanprint( typeof d );          // objectprint( typeof e );          // undefined(未初始化或未定义)

注意,使用typeof时也可以给参数添加小括号。不过由于typeof不是函数,小括号不是必须的。
JavaScript中的所有可执行对象,包括函数(一定可执行)、可执行对象(就是可以执行的对象,包括内置对象、宿主对象等),都会以"function"返回。
typeof操作符的操作数可以是变量,也可以是字面量。

注释

JavaScript支持的注释与C++一样,包括以下两种:
//
/*   */


原创粉丝点击