您的位置:首页 > Web前端 > JavaScript

JavaScript标准教程之基本语法

2017-09-28 20:44 190 查看
2.1概述

1.如果只是声明变量而没有赋值,则该变量的值是不存在的,JavaScript使用
undefined
表示这种情况。

var a;
a // undefined
2.如果使用
var
重新声明一个已经存在的变量,是无效的。

var x = 1;
var x;
x // 1
上面代码中,变量
x
声明了两次,第二次声明是无效的。但是:

如果第二次声明的同时还赋值了,则会覆盖掉前面的值。

var x = 1;
var x = 2;
x = 2;
3.变量提升

JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。另外,如果不是var声明的不会变量提升!

比如下面这行代码:

console.log(a);
var a = 1;
真正运行的是下面的代码:

var a;
console.log(a);
a = 1;
输出:undefined

4.标签

相当于定位符,用于跳转到程序的任意位置。通常与break和continue同时使用:

top:
for (var i = 0; i < 3; i++){
for (var j = 0; j < 3; j++){
if (i === 1 && j === 1) break top;
console.log('i=' + i + ', j=' + j);
}
}
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0
top:
for (var i = 0; i < 3; i++){
for (var j = 0; j < 3; j++){
if (i === 1 && j === 1) continue top;
console.log('i=' + i + ', j=' + j);
}
}
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0
// i=2, j=0
// i=2, j=1
// i=2, j=2
5.数据类型

一般来说javascript有六种数据类型

数值(number):整数和小数(比如1和3.14)

字符串(string):字符组成的文本(比如"Hello World")

布尔值(boolean):true(真)和false(假)两个特定值

undefined:表示“未定义”或不存在,即此处目前没有任何值

null:表示空缺,即此处应该有一个值,但目前为空

对象(object):各种值组成的集合

通常,我们将数值、字符串、布尔值称为原始类型(primitive type)的值,即它们是最基本的数据类型,不能再细分了。而将对象称为合成类型(complex type)的值,因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。至于undefined和null,一般将它们看成两个特殊值。

对象又可以分成三个子类型。

狭义的对象(object)

数组(array)

函数(function)
6.null和undefined

在if语句中,它们都会被自动转为false,相等运算符(==)甚至直接报告两者相等, 在严格比较(===)下是false.

7.布尔值

如果JavaScript预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。

undefined
null
false
0
NaN
""或''(空字符串)


需要特别注意的是,空数组([])和空对象({})对应的布尔值,都是true。
if ([]) {
console.log(true);
}
// true

if ({}) {
console.log(true);
}
// true

2.2数值

1.整数和浮点数

JavaScript内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一个数。
1 === 1.0 // true

这就是说,在JavaScript语言的底层,根本没有整数,所有数字都是小数(64位浮点数)。容易造成混淆的是,某些运算只有整数才能完成,此时JavaScript会自动把64位浮点数,转成32位整数,然后再进行运算

JavaScript涉及到小数的运算都要特别小心!

0.1 + 0.2 === 0.3
// false

0.3 / 0.1
// 2.9999999999999996

(0.3 - 0.2) === (0.2 - 0.1)
// false
2.NaN
NaN
是JavaScript的特殊值,表示“非数字”(Not
a Number)
⑴NaN不属于任何值,包括他本身

NaN === NaN //false
NaN == NaN //false⑵布尔运算当做false
Boolean(NaN) // false⑶NaN与任何数(包括它自己)的运算,得到的都是NaN。
NaN + 32 // NaN
NaN - 32 // NaN
NaN * 32 // NaN
NaN / 32 // NaN
⑷判断NaN方法
isNaN(NaN) // true
isNaN(123) // false但是,isNaN只对数值有效,如果传入其他值,会被先转成数值。比如,传入字符串的时候,字符串会被先转成NaN,所以最后返回true,这一点要特别引起注意。也就是说,isNaN为true的值,有可能不是NaN,而是一个字符串。
3.Infinity

Infinity有正负之分,Infinity表示正的无穷,-Infinity表示负的无穷。

Infinity === -Infinity // falseInfinity大于一切数值(除了NaN),-Infinity小于一切数值(除了NaN)。Infinity与NaN比较,总是返回false。
4.parseInt()

用于将字符串转为整数。parseInt的返回值只有两种可能,不是一个十进制整数,就是NaN。

⑴字符串转为整数的时候,是一个个字符依次转换,如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分。

parseInt('8a') // 8
parseInt('12**') // 12
parseInt('12.34') // 12
parseInt('15e2') // 15
parseInt('15px') //
4000
15⑵如果字符串的第一个字符不能转化为数字(后面跟着数字的正负号除外),返回NaN。
parseInt('abc') // NaN
parseInt('.3') // NaN
parseInt('') // NaN
parseInt('+') // NaN
parseInt('+1') // 1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: