浅谈关于浅谈关于JavaScript的语言特性分析的语言特性分析
前言前言
在JavaScript中,作用域、上下文、闭包、函数等算是精华中的精华了。对于初级JSer来说,是进阶必备。对于前端攻城师来
说,只有静下心来,理解了这些精华,才能写出优雅的代码。
本文旨在总结容易忘记的重要知识,不会讲基本的概念。如果对基本知识不太熟悉,就去翻下《 JavaScript权威指南》吧~
语言特性函数表达式
先看代码段:先看代码段:
代码如下:
[javascript] view plaincopyprint?
var f = function foo(){
return typeof foo; // foo是在内部作用域内有效
};
// foo在外部用于是不可见的
typeof foo; // “undefined”
f(); // “function”
var f = function foo(){
return typeof foo; // foo是在内部作用域内有效
};
// foo在外部用于是不可见的
typeof foo; // “undefined”
f(); // “function”
这里想说一点的就是,在函数表达式中的foo,只能在函数内部引用,外面是不能引用的。
json
很多JavaScript开发人员都错误地把JavaScript对象字面量(Object Literals)称为JSON对象(JSON Objects)。 JSON是设计成
描述数据交换格式的,它也有自己的语法,这个语法是JavaScript的一个子集。
{ “prop”: “val” } 这样的声明有可能是JavaScript对象字面量,也有可能是JSON字符串,取决于什么上下文使用它。如果是用在
string上下文(用单引号或双引 号引住,或者从text文件读取)的话,那它就是JSON字符串,如果是用在对象字面量上下文中,
那它就是对象字面量。
代码如下:
[javascript] view plaincopyprint?
// 这是JSON字符串
var foo = ‘{ “prop”: “val” }’;
// 这是对象字面量
var bar = { “prop”: “val” };
// 这是JSON字符串
var foo = ‘{ “prop”: “val” }’;
// 这是对象字面量
var bar = { “prop”: “val” };