JavaScript高级程序设计第三章基本概念

原创 Laughing  2018-01-08 22:19  阅读 584 次 评论 0 条

区分大小写

首先我们需要明白的第一个概念是,JavaScript是区分大小写的。

标识符

跟其他大多数语言类似,JavaScript标识符遵循以下规则

  1. 第一个字符必须是字母,下划线(_)或者美元符号($)
  2. 其他字符可以死字母、下划线、美元符号以及数字
  3. 不能使用保留关键字
  4. 采用camel大小写规则,即第一个字母小写,其他单词首字母大写

注释

采用c语言注释风格,支持单行注释以及块注释

严格模式

通过"use strict"表明函数采用严格模式

变量

变量是松散类型

所谓松散类型就是可以用来保存任何类型的数据。换句话说,每个变量仅仅是一个用于保存值的占位符而已。定义变量时要使用var操作符

  1. <script type="text/javascript">  
  2.        function sayHello() {  
  3.            "use strict"  
  4.            var a = "message"  
  5.            a = 10  
  6.            alert(a)  
  7.        }  
  8.        sayHello();  
  9.    </script>  

以上代码虽然没有任何问题,但是我们并不推荐这么做

使用var关键字定义的变量属于局部变量

以下代码会报错

  1. <script type="text/javascript">  
  2.         function sayHello() {  
  3.             "use strict"  
  4.             var a = "message"  
  5.             a = 10  
  6.             alert(a)  
  7.         }  
  8.         alert(a);//无效  
  9.         sayHello();  
  10.     </script>  

但是我们可以通过省略var关键字,讲局部变量变成全局变量,但是同样不推荐这样做,因为会导致全局变量异常混乱以及覆盖

  1. <script type="text/javascript">  
  2.         function sayHello() {  
  3.             a = "message";  
  4.             a = 10;  
  5.             alert(a);  
  6.         }  
  7.         sayHello();  
  8.         alert(a);//有效,但是不推荐  
  9.     </script>  

数据类型

ECMAScript 中有5 种简单数据类型(也称为基本数据类型):UndefinedNullBooleanNumberString。还有1 种复杂数据类型——ObjectObject本质上是由一组无序的名值对组成的。

  1. var a = 2.0  
  2.         var b;  
  3.         var c = "message";  
  4.         function d() {}  
  5.         console.log(typeof a);  
  6.         console.log(typeof (b));  
  7.         console.log(typeof (c));  
  8.         console.log(typeof d);  
  9.         console.log(typeof null);  


可以通过Number.MIN_VALUENumber.MAX_VALUE获取允许的最小值或最大值。如果大于最大值或者小于最小值,会返回正无穷大和负无穷大。他们是无法参与运算的。为了确保一个Number是否操作范围,可以通过isFinite()函数进行检查。
NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况。
可以通过isNaN()检查一个数值是否是NaN

数值转换

有3 个函数可以把非数值转换为数值:Number()parseInt()parseFloat()。。第一个函数,即转型函数Number()可以用于任何数据类型,而另两个函数则专门用于把字符串转换成数值。
Number()函数的转换规则如下。
 如果是Boolean 值,true 和false 将分别被转换为1 和0。
 如果是数字值,只是简单的传入和返回。
 如果是null 值,返回0。
 如果是undefined,返回NaN。
 如果是字符串,遵循下列规则:
 如果字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值,即"1"会变成1,"123"会变成123,而"011"会变成11(注意:前导的零被忽略了);
 如果字符串中包含有效的浮点格式,如"1.1",则将其转换为对应的浮点数值(同样,也会忽略前导零);
 如果字符串中包含有效的十六进制格式,例如"0xf",则将其转换为相同大小的十进制整数值;
 如果字符串是空的(不包含任何字符),则将其转换为0;
 如果字符串中包含除上述格式之外的字符,则将其转换为NaN。
 如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()方法,然后再次依照前面的规则转换返回的字符串值。

parseInt()函数在转换字符串时,更多的是看其是否符合数值模式。它会忽略字符串前面的空格,直至找到第一个非空格字符。如果第一个字符不是数字字符或者负号,parseInt()就会返回NaN;也就是说,用parseInt()转换空字符串会返回NaNNumber()对空字符返回0)。如果第一个字符是数字字符,parseInt()会继续解析第二个字符,直到解析完所有后续字符或者遇到了一个非数字字符。例如,"1234blue"会被转换为1234,因为"blue"会被完全忽略。类似地,"22.5"会被转换为22,因为小数点并不是有效的数字字符。

如果字符串中的第一个字符是数字字符,parseInt()也能够识别出各种整数格式(即前面讨论的十进制、八进制和十六进制数)。也就是说,如果字符串以"0x"开头且后跟数字字符,就会将其当作一个十六进制整数;如果字符串以"0"开头且后跟数字字符,则会将其当作一个八进制数来解析。

可以为这个函数提供第二个参数:转换时使用的基数(即多少进制)。如果知道要解析的值是十六进制格式的字符串,那么指定基数16 作为第
二个参数。

String类型

一个值转换为一个字符串有两种方式。第一种是使用几乎每个值都有的toString()方法。多数情况下,调用toString()方法不必传递参数。但是,在调用数值的toString()方法时,可以传递一个参数:输出数值的基数。默认情况下是10进制。

Object类型

Object 的每个实例都具有下列属性和方法。
 constructor:保存着用于创建当前对象的函数。对于前面的例子而言,构造函数(constructor)就是Object()。
 hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定(例如:o.hasOwnProperty("name"))。
 isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型。
 propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in 语句来枚举。与hasOwnProperty()方法一样,作为参数的属性名必须以字符串形式指定。
 toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
 toString():返回对象的字符串表示。
 valueOf():返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同。

with指令

  1. <script type="text/javascript">  
  2.         var hostname = location.hostname;  
  3.         console.log(hostname);  
  4.         var url = location.href;  
  5.         console.log(url);  
  6.         with (location) {  
  7.             console.log(hostname);  
  8.             console.log(href);  
  9.         }  
  10.     </script>  

通过上面的代码,大家应该能看出来with语句的作用。

本文地址:https://www.lisen.me/the-basic-concepts-of-the-third-chapter-of-javascript-advanced-programming.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情