JavaScript编程
- 一、JavaScript语法
- 1、变量
- (1)交互式运行环境——REPL
- (2)浏览器环境——Chrome
- (3)关键字var
- (4)变量的命名
- (5)变量提升机制
- 2、注释
- 3、数据类型
- (1)利用typeof区分数据类型
- (2)、利用Boolean()转化数据类型
- 4、函数
- 5、闭包
- 二、命名规范与编程规范
- 1、命名规范
- (1)var关键字
- (2)驼峰命名法
- (3)常量
- (4)内部变量
- (5)有意义的名字
- 2、编程规范
- (1)以分号结尾
- (2)大括号
- (3)===
- (4)空格的使用
一、JavaScript语法
JavaScript是一门直译式、弱类型的脚本语言,也是Web开发最重要的语言之一。
1、变量
(1)交互式运行环境——REPL
Node.js提供了一个交互式运行环境——REPL。在这个交互式环境中可以运行简单的应用程序。
提示:如果要退出该运行环境,连续两次Ctrl+C快捷键,或者输入.exit。Node.js的命令需要在前面加点。
(2)浏览器环境——Chrome
在Chrome浏览器中的Console面板中也可以达到和REPL相同的效果。
(3)关键字var
JavaScript的变量通过关键字var来声明。JavaScript是一门弱类型的编程语言,JavaScript的所有数据类型都可以用var来声明,通过var 变量名=值的形式就可以对变量同时进行声明和赋值。和许多语言一样,JavaScript通过分号“;”来分隔不同的语句。
相关例子如下所示:
var a = "hello";
var b = 1;
(4)变量的命名
JavaScript规定变量名必须以字母、美元符($)、下划线(_)三者之一开头,同时JavaScript对大小写敏感,大小写不同也就意味着是不同的两个变量。同时JavaScript不区分单引号与双引号。
(5)变量提升机制
JavaScript中存在变量提升机制,也就是说所有的变量声明在运行时都会提升到代码的最前面。
2、注释
JavaScript中的注释和很多其他编程语言类似,以双斜杠(//)代表单行注释,以“/…/”形式代表多行注释。
3、数据类型
JavaScript中的数据类型可以分为简单数据类型和复杂数据类型。简单数据类型有undefined、boolean、number、string、null,复杂数据类型有object。object是由一组无序的键值对组成。
(1)利用typeof区分数据类型
利用操作符typeof可以部分区分以上的数据类型。typeof返回的值有undefined、boolean、number、string、object和function。
例如:
var a;
console.log(typeof a);
注:null和object类型的数据,经过typeof区分后均会返回object,因为null实际上是一个空对象指针。
(2)、利用Boolean()转化数据类型
JavaScript中可以利用Boolean()方法将其他数据类型转化为布尔值。需要注意的是,空字符串、0、null、undefined、NaN都将转化成false,其他值转化成true。
4、函数
在JavaScript中,声明一个函数只需要使用function关键字即可,如声明一个求和的函数。
代码如下:
function add(num1, num2) {
return num1 + num2;
}
当然函数同样可以作为一个值传递给一个变量,例如:
var add = function(num1, num2) {
return num1 + num2;
}
调用一个函数可以在函数声明之后使用”函数名(参数)“的形式进行调用。
函数中默认带有一个arguments参数,这是一个类数组对象。arguments记录了传递给函数的参数信息,因为JavaScript中的函数调用时,参数个数并不需要和定义函数时的个数一致。
利用好这一点和arguments类数组特性可以对上述的add方法进行拓展,然这个函数无论接收多少个参数,总能返回这些数值的和:
function add() {
var sum = 0;
for(var i = 0, max = arguments.length; i < max; i++) {
sum += arguments[i];
}
return sum;
}
add(1,2,3);
还可以利用JavaScript中的arguments类数组对象模拟函数重载。当然,实际上JavaScript并不支持重载,比如通过检测arguments对象的length属性做出不同的反应来模拟重载。
相关代码示例如下所示:
function operate() {
if(arguments.length == 2) {
return arguments[0] * arguments[1];
} else {
var sum = 0;
for(var i = 0, max = arguments.length; i < max; i++) {
sum += arguments[i];
}
reutrn sum;
}
}
operate(1,2);
operate(1,2,3);
arguments对象是一个类数组对象。通过数组的slice()方法可以把arguments对象转化为一个真正的数组,这样就可以使用数组的所有方法,而不用担心出现其他的问题。
function funName() {
var arguments = [].slice.call(arguments);
}
5、闭包
JavaScript中的变量可以分为全局变量和局部变量。JavaScript中的函数自然可以读到全局变量,而函数外部并不能督导函数内部定义的变量。
当然,这需要在定义变量的时候使用var关键词定义。不用var关键字定义的话,这个变量会成为全局对象的一个属性。在Node.js中,全局对象是global。
例如:
var str = 'hello';
function copy() {
str1 = str;
console.log(str1);
}
copy(); //hello
console.log(str1); //hello
提示:建立所有的变量都使用var关键字进行定义,以避免不必要的错误出现。
JavaScript中的闭包可以让函数读到其它函数内部的变量,如下代码就可以让函数之外读到函数内部定义的变量,这就是最简单的闭包。
function a() {
var str = 'hello';
return function() {
var str1 = str + 'world';
return str1;
}
}
a()(); //helloworld
二、命名规范与编程规范
1、命名规范
(1)var关键字
JavaScript中,所有的变量都应该通过var关键字来定义,而不是缺少var关键字,因为缺少var变量声明会使得这个变量成为全局变量,在开发中则应尽量减少全局变量。
(2)驼峰命名法
驼峰命名法命名变量的方法是第一个单词的开头小写,其他单词的开头字符大写。
(3)常量
常量是一种不允许在声明赋值之后再修改的变量。再常量的命令中,开发人员往往采用变量名全部大写的方式来表达这是一个常量。
(4)内部变量
内部变量并不希望局部作用域之外的作用域来获取这些变量。开发人员通常以下划线”_“开头命令作为约定俗成的内部变量。
(5)有意义的名字
在命名中不应该使用一些无意义的变量名,而应该使用一些有意义的、能够表示变量作用的命名。
2、编程规范
(1)以分号结尾
在JavaScript代码中,所有的语句都应该以分号结尾,虽然JavaScript中并没有强制要求。
(2)大括号
所有的语句块都应该使用大括号,虽然一些语句块在不适用大括号的过程中也不会出现错误,但是统一均使用大括号可以更好的方便开发人员进行阅读。
(3)===
相等判断中应该尽量使用绝对相等”===“,因为等于"==“存在着类型转化,这在开发中可能会出现意向不到的错误。
(4)空格的使用
建议在数值操作符(如+、-、*、/、%等)前后留有一个空格,在赋值操作符和相等判断前后留有一个空格。在json对象中键值对的冒号后应该留有一个空格。