javascript基本概念

  javascript是一种动态松散语言,其语法等并没有很严格的限制,如定义一个object类,可以在内部定义属性与方法,也可以在外部(调用方)为其添加新的属性和方法,极其方便我们使用,但方便的同时,我们也要为之付出一点代价,如调用方并不知道一个类是否有定义方法funA,所以在调用方调用之前还需要判断是该类是否有定义该方法,要不然会出错。因为JS是解析语言,只有浏览器解析到每一行代码才会去验证该行代码正确性,验证通过则执行,不通过则抛错,没有像其他编译语言,需要预编译语法才能通过。

 

  关键词:是内部语言当中已经定义好的标识符,如内置函数(类)、数据类型等,以下都是JS关键词:

break,while,if,case,switch,do,var,else,throw,try,eval,arguments,null,undefined 等。其中let,yield是ECMAScript第5版新增关键词,也不要拿来使用。 注:关键词不能用作定义的标识符。

 

  标识符:定义对象(实体)、变量、函数等的名称,如var temp; 定义一个标识符(名)为temp的变量。标识符规则:

1.区分大小写。

2.必须以字母、下划线或$美元符为开头。

3.其他字符可以是字母、下划线、$美元符和数字。

  其他规则则推荐:

1.根据JS内部语法,采用驼峰大小写格式进行命名,即第1个字符小写,其余字符单词首位字母大小,其它小写。如var myNameSpace;

2.推荐声明标识前面加var关键词,表示定义一个变量,不加也不会出错,不过会造成一定混乱,可读性差不便以维护。

3.注意全局与局部变量,如以下事例:

第一种情况:

var temp;

function fun1() {

  alert(temp);

}

上面代码中的变量temp是全局变量,作用区域范围是方法fun1外面一层级,包括方法内部。

第二种情况:

function fun1() {
  var temp;

  alert(temp);

}

上面代码中的变量temp是局部变量,它在fun1定义,则在fun1结束时自动销毁temp,在函数外不能访问。

第三种情况:

var temp = 'a';

function fun1() {
  var temp = 'b';

  alert(temp);//输出'b'

}

fun1();

alert(temp);//输出'a'

上面代码中的变量temp有2个不同变量,分别是全局变量和局部变量,其作用域名也跟着其环境而不同。如果fun1内部要访问外面的temp,则使用this.temp即可。

第四种:

var temp = 'a';

function fun1(temp) {
  var temp = 'b';

  alert(temp);//输出'b'

}

fun1('c');

alert(temp);//输出'a'

上面代码中的变量temp其实有3个没变量,方法里面temp覆盖了其参数temp。

   

  数据类型:javascript有5种基本数据类型(undefined,null,string,number,boolean)和1种复杂数据类型 (object)。ECMAScript不支持自定义类型,所以任何数据类型都是这6种之一;但ECMAScript数据类型具有动态性,可以扩展出任何类型,如object,可以动态添加属性与方法。各种对应类型可以通过下面函数转换:

  Number(num); --将num转换为数字。 num可以是任何数据类型,如字符串,布尔值。如果能正确转换则会返回数字,如果不能转换则返回NaN。

特殊例子:Number(true);返回1, Number(false);返回0

  Boolean(varBool); --将varBool转换为布尔型。varBool可以是任何数据类型。

例子:Boolean(false),返回false;Boolean(true),返回true;Boolean("false"),返回true,Boolean(undefined),返回 false,Boolean(null),返回false; Boolean(1),Boolean(2),返回true;Boolean(0),返回false。

  String(varStr);--将varStr转换为字符串。

例子:String("abc"); ="abc";String(false); ="false", String(1); ="1", String(undefined);="undefined", String(null);="null",  String(3);="3", String(3das); 错误

  Object(varObj);--将varObj转换为对象。

例子:

  Object(2): Number{}

  Object(false): Boolean{}

  Object("str"): String {0: "s", 1: "t", 2: "r", length: 3}

  Object(null)或Object(undefined): Object() { }

 

  操作符:表示描述操作数据值的操作符,如算术运算符,通常会调用对象的valueOf或toString方法。(如果valueOf没有定义则调用toString)

 

  for in:如果一个变量是可枚举遍历的,则可用此关键词循环每一项。如:

  for (var item in items) {

  }

 

  with:被定义为将代码的作用域名设置到特定对象中。如:

  with(location) {
    var url = href;

    var hostName = hostname;
  }

此关键词虽然在频繁访问一个对象多个属性时带来方便,但这种性能比较差并且不便于调试,所以在要求大性能网站禁止使用;且在严格模式下也是禁止使用,否则被视为语法错误。

 

posted @ 2015-08-05 09:05  司马逍遥  阅读(124)  评论(0)    收藏  举报