JavaScript高级程序设计——第3章 基本语法

多言一句:简书的笔记搬迁,这是第一篇。

3.1、 语法

  • 区分大小写
  • 标识符必须以字母、下划线或 线 开 头 , 其 他 字 符 可 以 是 字 母 、 数 字 、 下 划 线 或 。建议用驼峰命名法,与ECMAScript内置的函数和对象命名格式保持一致
  • 注释风格同c语言
  • 严格模式 “use strict” ,是一个编译指示(pragma),在此模式下ECMAScript 3中一些不确定行为将得到处理
  • 语句结束的分号非必须但建议不要省略,控制语句中用代码块
var num = 3;
var num = 3     //正确,不推荐

if(a == b){     //正确,推荐使用
  return true;
}
  • 关键字和保留字
  • 变量的作用域问题

3.2、数据类型【undefined、null、number、string、boolean、object】

  • typeof操作符:可能返回undefined、boolean、string、number、object、function
  • undefined类型:使用var声明变量但未对其初始化
  • null类型:逻辑上看,null值表示一个空对象指针,这正是typeof null会返回“object”的原因。如果定义的变量准备在将来用作保存对象,最好初始化为null

undefined值派生自null值

alert(null == undefined);  //true
  • boolean:只有两个字面值true和false

转型函数Boolean()

数据类型转换为true的值转换为false的值
booleantruefalse
string任何非空字符串“”/空字符串
number任何非零数字值(包括无穷大)0和NaN
object任何对象null
undefinedn/a(not applicable,不适用)undefined
  • number类型
进制

八进制字面值以0开头,然后是0~7;字面值中的数字超过8,前导0将被忽略,后面的数值将被当做十进制数解析;八进制字面量在严格模式下无效

var number1 = 070;//八进制的70
var number1 = 078;//十进制的78

十六进制:0x打头,后面是0~F/f


浮点数

最高精度17位小数
ECMAScript会将一些浮点数转换为整数

var float1 = 1.;   //整数1
var float2 = 10.0; //整数10

默认情况下,带有6个零以上的浮点数会被转换为以e表示法表示的数值。如0.0000003→ 3e-7
浮点数值计算会有舍入误差【IEEE754数值的浮点计数的通病】
0.1 + 0.2 的结果不是0.3,而是0.30000000000000004,而0.25+0.05不会有这样的问题


数值范围

ECMAScript能保存的最小数值保存在Number.MIN_VALUE中,最大值则在Number.MAX_VALUE。计算结果若超出js数值范围,会被转换成Infinity或-Infinity,该值无法参与后续计算。isFinite()函数在参数位于范围时,返回true。


NaN(Not a Number)

表示本来要返回数值的操作数未返回数值的情况,如任何数除以0,其他语言中会导致错误,而ECMAScript会返回NaN(理论上如此,但实际上正数除以0会返回Infinity,负数除以0返回-Infinity,只有0除以0返回NaN)
任何涉及NaN的操作,都返回NaN,NaN与任何值不相等,包括它本身
详细https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN


数值转换

Number(object) optional

var x1 = Number(true);       //1
var x2 = Number(false);      //0
var x3 = Number(new Date()); //the number of milliseconds since Jan 1,1970 UTC
var x4 = Numner("999");      //999
var x5 = Number("999 888");  //NaN
var x6 = Number("011");      //11【前导0会被忽略】

The function converts the object argument to a number that represents the object’s value.If the value cannot be converted to a legal number,NaN is returned.
parseInt(string,radix) required,optional

var a = parseInt("10");        //10
var b = parseInt("10.00");     //10
var c = parseInt("10.33");     //10
var d = parseInt("34 45 66");  //34
var e = parseInt(" 60 ");      //60
var f = parseInt("40 years");  //40
var g = parseInt("He was 40"); //NaN【忽略空格后,首字符不是数字】

var h = parseInt("10", 10);    //10
var i = parseInt("010");       //10 for ECMAScript 5
var j = parseInt("10", 8);     //8
var k = parseInt("0x10");      //16
var l = parseInt("10", 16);    //16

parseFloat(string) required
和parseInt差不多,读出一个完整的小数就结束

  • string类型

①字符字面量/转义序列:有“\”开头
②字符串的特点:字符串一旦创建,就无法改变,要改变某个变量中保存的字符串,要先销毁原来的字符串,再用新的字符串填充变量。
③转换为字符串的方法
toString()
String()

  • object类型

object类型是它的所有实例的基础,它所具有的任何属性和方法同样存在于更具体的对象中
var o = new Object();
①constructor:保存用于创建当前对象的函数,上文的例子是Object()
②hasOwnProperty(prooertyName),
③isPrototypeOf(object)
④propertyIsEnumerable()
⑤toLocaleString()
⑥toString()
⑦valueOf()

3.3、操作符

一元操作符:++、–、+、-
位操作符(~、$、|、^)、左移<<、有符号右移>>、无符号右移>>>
布尔操作符!:返回结果只有两种false和true
乘性操作符*、/
求模%
加性操作符+、-
关系操作符>、<、<=、>=:注意类型转换顺序,先看能不能转成数字,再看字符串
相等操作符==、!=、===、!==
条件操作符?:
赋值操作符=(还有+=、*=、<<=等等)
逗号操作符:返回表达式中的最后一项

3.4、语句

if语句
do-while语句
while语句
for语句
由于ECMAScript不存在块级域,因此在循环内定义的变量,在外部也可以访问到。

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

for-in语句
如果要迭代的对象的变量值为null或undefined,可能会抛出错误。ECMAScript 5更正了这一行为。使用for-in之前最好检测对象值
label语句
break、continue
with语句:将代码作用域设置到一个特定的对象中

with(location){
var qs = search.substring();
...
}
var qs = location.search.sunstring();

switch语句:可以使用任何类型,比较时使用全等(“===”)操作符,不会发生类型转换

3.5、函数

参数:ECMAScript中的参数在内部是用一个数组来表示的。在函数体中可以通过arguments对象【已废弃】来访问这个参数数组。但是arguments对象只是与数组类似,可以用方括号语法访问它的每一个元素(如arguments[0]访问第一个元素),用length属性确定传递了多少个参数。它不是Array的实例。
ECMAScript函数没有传统意义上的重载。如果定义了两个相同名字的函数,后面的函数会覆盖前面的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值