Javascript 教程 在线

465JavaScript变量

看书的时候会有一个“字面量”的概念,初学不是很好理解。

字面量(literal)用于表达源代码中一个固定值的表示法(notation),整数、浮点数以及字符串等等都是字面量。

示例:

var a=1;   // a 是变量,1 是字面量

又如:

var stooge = {    // stooge 是一个对象
   "frist-name" = "Julie",    // 等号左为属性名,右侧为属性值
    last_name = "beck"    // 属性名如果是合法的标识符,可省略引号

};    // "frist-name", last_name, "Julie", "beck" 都是对象字面量

总之,字面量就是没有用标识符封装起来的量,是“值”的原始状态。

与常量的区别如下:

//  C/C++:

const int A = 1;    // A 是常量,1 是字面量
A++;    // error,常量值不能改变

464JavaScript变量

const 关键字用来声明 JavaScript中的常量(与变量相对,不可修改,但同样是用于存储信息的"容器"。),常量的值不能通过重新赋值来改变,并且不能重新声明。

代码:

//定义常量a并赋值为0
const a = 0;

//报错(不能重新赋值)
a = 1;

//报错(不能重新声明)
const a = 2;

//输出0
console.log("a is: " + a);

463JavaScript变量

Javascript声明变量的时候,虽然用var关键字声明和不用关键字声明,很多时候运行并没有问题,但是这两种方式还是有区别的。可以正常运行的代码并不代表是合适的代码。

// num1为全局变量,num2为window的一个属性
var num1 = 1;
num2 = 2;
// delete num1;  无法删除
// delete num2;  删除
function model(){
var num1 = 1; // 本地变量
num2 = 2;     // window的属性
    // 匿名函数
    (function(){
        var num = 1; // 本地变量
        num1 = 2; // 继承作用域(闭包)
        num3 = 3; // window的属性
    }())
}

462JavaScript变量

介绍JS中的let变量:

let var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]];

let允许你声明一个作用域被限制在块级中的变量、语句或者表达式。在Function中局部变量推荐使用let变量,避免变量名冲突。

作用域规则

let 声明的变量只在其声明的块或子块中可用,这一点,与var相似。二者之间最主要的区别在于var声明的变量的作用域是整个封闭函数。

function varTest() {
    var x = 1;
    if (true) {
        var x = 2;       // 同样的变量!
        console.log(x);  // 2
    }
    console.log(x);  // 2
}

function letTest() {
    let x = 1;
    if (true) {
        let x = 2;       // 不同的变量    
        console.log(x);  // 2  
    }
    console.log(x);  // 1
}

461JavaScript注释

应用注释符号验证浏览器是否支持 JavaScript 脚本功能

如果用户不能确定浏览器是否支持JavaScript脚本,那么可以应用HTML提供的注释符号进行验证。HTML注释符号是以 <-- 开始以 --> 结束的。如果在此注释符号内编写 JavaScrip t脚本,对于不支持 JavaScript 的浏览器,将会把编写的 JavaScript 脚本作为注释处理。

使用 JavaScript 脚本在页面中输出一个字符串,将 JavaScript 脚本编写在 HTML 注释中,如果浏览器支持 JavaScript 将输出此字符串,如果不支持将不输出此字符串,代码如下:

<script>
<!--
document.write("您的浏览器支持JavaScript脚本!");
//-->
</script>

注意:注释行结尾处的两条斜杠 // 是 JavaScript 注释符号。这可以避免 JavaScript 执行 --> 标签。