JavaScript入门

简介

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);      // undefined
var 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 ); // function
print( typeof site );       // object(值是对象或null)
print( typeof a );          // number
print( typeof b );          // string
print( typeof c );          // boolean
print( typeof d );          // object
print( typeof e );          // undefined(未初始化或未定义)

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

注释

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


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值