JavaScript高级程序设计 第三章

3.基本概念

3.1语法

JavaScript的语法都区分大小写

标识符:

  • 第一个字符必须是字母,下划线,$
  • 其他字符可以是以上字符和数字
  • 按照惯例,ECMAscript使用驼峰大小写

严格模式

在顶部添加"use strict";

在该模式下,一些不确定的行为将会得到处理

3.2关键字和保留字

let和yield是第五版定义的


3.3变量

ECMAscript的变量是松散类型的,可以保存任何数据,定义变量用var

tip:用var定义变量的变量将会成为该作用域中的局部变量

function test(){
    var message = 100;
}//在函数中创建的是局部变量,函数调用时创建该变量为其赋值,调用之后该值被销毁
test();
alert(message);//错误的

如果定义变量时不加var,则成为全局变量,不过在严格模式下会出错(不推荐)

function test(){
    message = 100;
}//没有使用var声明说明时全局变量
test();
alert(message);//正确的

3.4 数据类型

ECMAscript中有5中简单数据类型(也称基本数据类型),undefined、Null、Boolean、Number、String

简单数据类型存储在栈里面

复杂数据首先在栈里面存放地址,这个地址指向堆里面的数据。

简单数据类型传参的时候传递的是值

复杂数据类型传递的是地址

还有一种特殊的类型:Object

undefined

undefined类型只有一个值就是undefined

它表示的是声明了变量但是没有对其赋值,这个变量的值就是undefined

没有初始化的值

tip:对未初始化的变量和未声明的变量进行typeof得到的都是undefined,从技术角度没有任何区别,但是实际上任何变量都不能执行真正的操作

Null

null也是只有一个值的数据类型,null

null表示的是一个空的对象(与undefined区分)

如果定于的变量准备用来存储对象,那么这个变量应该初始化成为null

undefined派生于null,所以null==undefined返回的是true

Boolean

该类型只有两个值,true和false(这两个值区分大小写)

ECMAscript中所有类型的值都有与这两个布尔值等价的值,可以调用Boolean()

var message = "hello wolrd";
if(message)//这里的message=Boolean(message)
{
    alert(message);
}
alert(message);

Number

最基本的数值是十进制,还可以通过八进制,十六进制

八进制0开头,如果字面值中的数值超过范围那么前导0将被忽略转换为十进制

在进行算术计算时,八进制和十六进制都将会转换为十进制

浮点数:

浮点数占据的内存时整数的两倍,所以ECMAscript会尽量将浮点数转成整数如1.和10.0

支持科学计数法

永远不要测试某个特定的浮点数,精度不够

数值范围

最小的值时Number.MIN_VALUE

最大的值时Number.MAX_VALUE

超过极限会转换为特殊的infinity

NaN

非数值是一个特殊的数值,这个数值用来表示一个本来要返回数值的的操作数未返回数值的情况(如任何数/0)

NaN与任何数值都不相等,包括本身

ECMAscript定义了isNaN函数来确定这个参数是不是数值,任何不能转换为数值的值都会返回true

数值转换

  • Number

    • 如果字符串包含数字则将其转换成十进制
    • 如果是对象则使用valueof方法
  • parseInt()

    • 一般常用于转换字符串
  • parseFloat()

string

任何字符串都可以通过其length属性获得

ECMAscript规定字符串一旦创建,它的值不能更改

转换为字符串

方法toString():不能转换null和undefined

num.toString()

转型函数String():可以转换

String(num);

Object

在ecmascript中对象就是一组数据和功能的集和

创建方法:

var o = new Object;

object类是所有类的父类

3.5 操作符

逻辑操作属于短路操作,如果第一个操作数能决定结果那么就不会执行第二个操作

任何数字和NAN比较都会返回false

全等操作符

只在两个操作数未经转换就相等的情况下返回true

为了保持数据类型的完整性,一般使用全等操作符

3.6 语句

由于JavaScript中不存在块级作用域,所以循环内部定义的变量在外部也可以访问到

var count =10;
for (var i = 0; i <count ; i++) {
    console.log(i);
}alert(i);//i=10

for in:是一个精准的迭代语句,用于枚举对象的属性,但是ECMAscript里面对象的属性是没有顺序的

3.7 函数

ECMAscript函数不介意传进来多少个参数,也不在乎传进来的参数的数据类型是什么

可以使用arguments对象来访问参数数组,从而获得每一个传给函数的参数

function howManyArgument(){
    alert(arguments.length);
}
howManyArgument(1,2,"e3",true);//4

arguments对象可以和命名对象一起使用

JavaScript由于没有类似于C和Java一样的函数签名所以不能进行方法重载,如果函数同名则以第二个函数的定义为准

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值