程序员

JavaScript基本语法(一)

2016-12-20  本文已影响487人  犯迷糊的小羊

目录

1. 语句

2. 变量

3. 小结


JavaScript基本语法(一)是JavaScript核心知识点(ECMAScript)的基本语法的第一部分,主要介绍了:JavaScript语句、表达式、变量和数据类型(不包括函数类型)的基本知识点,函数类型将在下一章《JavaScript函数(二)》中详细探讨;


1.语句

JavaScript程序的执行是由一条条语句组成的;

var a = 1;
//执行赋值操作的语句,结束标志的分号
var b = 1+1;
//执行赋值操作的语句,赋值操作符右边使用了表达式,返回值为2,结束标志是分号

2. 变量

JavaScript是一门弱类型语言,通过使用关键字var声明变量,在赋值时变量的数据类型将根据值的类型动态转变,从而体现弱类型的特征。

2.1 变量的声明与赋值
var a;
a//undefined
var a = 1;
//等价于
var a;
a  = 1;
var a=1,
    b=2,
    c=3;
2.2 标识符(identifier)

标识符即标识变量的名字,例如var a =1,标识符为a,标识符的命名规则如下:

  • 第一个字符必须是任意Unicode字母、下划线_或是美元符号$;
2.3 数据类型

JavaScript的数据类型主要包括数值、字符串、布尔值、对象、undefinednull,ES6新增Symbol

其中,数值、字符串和布尔值可称为基本数据类型,因为所有的数据都是由这三种最基本的类型的值构成;

对象可称为复杂数据类型,这里的对象指的是广义的对象,具体可细分为:

  • 狭义的对象(object)
var a = 12//十进制,12
var b = 0B1//二进制,2
var c = 010 //八进制,8
var d = 0x10 // 十六进制,16
var e = 1.503e7 //科学计数法,15030000

【TIP】
在进行进制间的算术计算时,最终将转换为十进制;
八进制在严格模式下是无效的,会报错;
数值的范围
js能表示的数值的最大、最小范围保存在Number.MAX_VALUENumber.MIN_VALUE当中;
无穷大的数值存储在Number.POSITIVE_INFINITY,无穷小的数值Number.NEGEITIVE_INFINITY,可用isFinite()函数检测一个数值是否是无穷数值;


NaN
NaN是一个特殊的数值,表示非数字,主要出现在本来要返回数值的操作数未返回数值的情况下最终抛出一个NaN替代,主要出现场景如下:
//在进行算术运算时,无法将该变量进行数据类型转换为数值;
var a =1,b= "h"
a-b
//不符合算是运算法则
0/0

【TIP】
使用typeof NaN会抛出"number",证明NaN是一个特殊的数值;
NaN === NaN结果是false,证明,NaN不等于任何值;
可使用isNaN()判断一个值是否为NaN
数值类型转换
js提供三个方法将数据转换为数值类型,包括Number()parseInt()parseFloat();
Number()可将所有类型数据转换为数值,parseInt()parseFloat()能将字符串转换为数值;
Number()除了值为undefined、字符串和对象无法转换为数值的将转换为NaN,其他都可转换为数值;

此外,还可以使用算术操作符实现数值类型转换,作用相同于Number():


<pre>
在进行字符串转换为数值时,通常使用parseInt(),该方法的处理原理是忽略字符串前的空格,直到找到第一个非空格字符,
如果第一个字符不是数字字符或负号,则返回NaN,也就是说parseInt('')和parseInt(null)与Number()的返回值不同;
</pre>

<pre>
可为parseInt()提供第二个参数,指明要进行转换的数值的进制
</pre>

<pre>
parseFloat()方法的处理原理基本和parseInt()类似,区别在遇到第一个小数点是有效的,第二小数点是无效的,并且直解析十进制;
</pre>
//可用单引号也可用双引号;
var a = "H",
      b = 'E';
//长字符串的表示,多适用于HTML模板的表示
var c = "
            <template> \
                     <h1>JavaScript</h1> \
                    <p>Hello World!</p> \
            </template>
"
//多个字符串的拼接,多适用于添加js代码
var c = "hello"+"world"+document.getElementById('demo').innerHTML

转移字符
string数据类型包含一些特殊的字符,用于表示非打印字符或是具有其他用途的字符;

\t:制表符
\n:换行符
\r:回车
\b:退格
\\:反斜杠
\':单引号
\":双引号
\xnn:以十六进制代码nn(n为0~F)表示一个字符,如\x41表示"A"
\unnnn:以十六进制代码nnnn表示一个Unicode字符

字符串类型转换
将其他类型数据转换为字符串型有三种方法:

1.每个字符串均有toString()方法
var a = 11,b;
a.toString()//"11"
b.toString()//对于只声明未赋值的变量或null,toString()将报错
2.String()函数对于任何类型的数据均有效
String(null)//"null"
String(undefined)//"undefined"
String(true)//"true"
3.空字符串""+其他类型数据
""+undefined//"undefined"
""+null//"null"

字符串与数组
字符串可以看作字符数组并且具有length属性,和真实数组不同的是该数组元素只能读不能写,并且没有数组相应的方法;


0
NaN
undefined
null
""
false

** 布尔型的应用场景**
布尔型数据往往结合流程控制语句用于执行条件代码块

var message = "hello world"
if(message){
  alter(message)
}

1.字面量法
var a = {a:1,b:2};
2.Object构造函数法
var b = new Object();
3.Object.create()法
var c = Object.create(null)

以上3种方法,字面量法最为简洁,Object方法比较正式,Object.create()常用于原型继承场景;
对象的读写操作
对象的键或值可看做对象的属性和方法,属性代表对象的特性,方法代表对象的能力;

//写操作
1.直接赋值
var a = {
    name:"teren",
    age:18,
    say:function(){
      console.log('hi')
    }
}
2.动态创建
a.height = 185
a.['weight'] = '60kg'
a.ability = function(){
    return "talk"
}
//读操作
a.name
a['age']

查看所有属性

Object.keys(a)

delete命令
delete命令用于删除对象的属性,但delete只能删除对象本身的属性,无法删除继承的属性;由var声明的全局变量默认是无法删除的;在Object.definedProperty方法的configurable定义为false的也不能删除;



in运算符
in运算符可用来判断对象的某个属性是否存在,但in无法判断这个属性是属于自身的还是继承的,可用Object.hasOwnProperty()去判断属性;

var arr = [1,2,3,4]
for(var i=0;i<arr.length;i++){
    console.log(arr[i])
}
var arr = [1,2,3,4]
arr.foo = true;
for(var key in arr){
   console.log(key)
}
//0
//1
//2
//3
//4
//foo
[注]for...in循环不仅遍历数组的数字键,还会遍历非数字键,所以一般数组的循环遍历都采用for循环;
var arr = [1,2,3,4]
arr.forEach(function(value,key){
    console.log(key+"."+value)
})
var arr = [1,2,3]
console.log(Object.keys(arr))

类数组对象
js中有些对象被称作“类数组对象”,样子看上去很像数组,实际是个对象,并且没有数组的相关属性和方法,例如函数的arguments对象、DOM元素集和字符串;


可以使用Array.prototype.slice.call(likeArrayObject)使得类数组对象变成真实的数组;

3.小结

通过整篇文章,我们可以了解到:


参考资料

上一篇 下一篇

猜你喜欢

热点阅读