JavaScript高级程序设计学习笔记——基本介绍

语法

ECMAScript的语法大量借鉴了C以及其他C语言(Java)
(难怪学习js的时候上手会比较快,毕竟在大学也是学过C和Java的)

严格模式

严格模式为JavaScript定义了一种不同的解析和执行模型。在严格模式下ECMAScript3的一些不确定的行为将得到处理,对某些不安全的额操作也会抛出错误。

"use strict";
语句

语句的结束使用分号 ; 加上分号可以避免输入不完整的错误,也可以通过删除空格来压缩代码。

变量

js的变量是松散类型的,可以保存任何类型的数据
每个变量仅仅是一个用来保存值的占位符而已(这个描述很到位)

var message; 

定义了一个message变量,但没有赋值,会保存成undefined
(有没有在开发过程中经常看到各种undefined的报错)

var message = "hi";
message = 100; // 有效,但不推荐

使用var定义的变量将成为该作用域下面的局部变量

function test(){
var message = "hi"; // 局部变量
}
test();
alert(message); // 错误!

不通过var定义的变量将成为全局变量

function test(){
message = "hi"; // 全局变量
}
test();
alert(message); // "hi"

在严格模式下将会抛出ReferenceError 错误。

可以使用一条语句定义多个变量

var message = "hi",
    found = false,
    age = 29;    //高端的写法适合装X。。

数据类型

undefined类型
var message;
alert(message == undefined); //true

未经初始化和未经声明的变量都会返回undefined

var message; // 这个变量声明之后默认取得了undefined 值
// 下面这个变量并没有声明
// var age
alert(typeof message); // "undefined"
alert(typeof age); // "undefined"
null类型

null表示空对象指针

var car = null;
alert(typeof car); // "object"

undefined 值是派生自null 值的

alert(null == undefined); //true

如果一个打算保存对象的变量还没有被赋值的时候,可以让其保存null

Boolean类型

所有类型的值都可以通过Boolean()转成Boolean类型的值
非空字符串 ==> true
空字符串 ==> false
if 语句自动执行相应的Boolean 转换
null 和 undefined这两种会是什么情况呢?

var msg1 = undefined;
var msg2 = null;
console.log(Boolean(msg1));  // false
console.log(Boolean(msg2));  // false

所以当拿到的数据是null或undefined时,可以使用if语句去判断
不需要if(undefined === msg1) 直接 if(msg1)即可

Number类型

支持三种进制,十进制,八进制,十六进制

浮点数

小数点前面可以没有整数,但不推荐
浮点数的内存空间是整数的两倍,所以一些浮点数会被转换为整数
支持科学计数法表示极大值和极小值

var floatNum = 3.125e7;    // 3.125 乘以10的7次方
0.1+0.2 = 0.3吗?

浮点数的最高精确度是17位小数
将0.1和0.2转成二进制
0.1 => 0.0001 1001 1001 1001…
0.2 => 0.0011 0011 0011 0011…
取17位想加,再转成十进制就成了0.30000000000000004

if (a + b == 0.3){ // 不要做这样的测试!
    alert("You got 0.3.");
}
parseFloat()

parseFloat()只解析10进制的数
十六进制的数会被转成0
八进制会忽略第一个0

var num1 = parseFloat("1234blue"); //1234 (整数)
var num2 = parseFloat("0xA"); //0
var num3 = parseFloat("22.5"); //22.5
var num4 = parseFloat("22.34.5"); //22.34
var num5 = parseFloat("0908.5"); //908.5
var num6 = parseFloat("3.125e7"); //31250000
parseInt()

parseInt()可以接受两个参数,第一个要转换的数值,第二个进制

var num = parseInt("070");  //num == 70
var num = parseInt("070",8);  //num == 56

所以为了避免一些错误,我们在使用parseInt()方法时,应该指定第二个参数

Number()

parseInt()和parseFloat()只针对字符串进行转换;
Number()可以对任意类型的值进行转换;

var num1 = Number("Hello world!"); //NaN
var num2 = Number(""); //0
var num3 = Number("000011"); //11
var num4 = Number(true); //1

String类型

字符串一旦创建,值不可以改变
要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值得字符串填充该变量。

转换为字符串
toString()
var age = 11;
var ageAsString = age.toString(); // 字符串"11"
var found = true;
var foundAsString = found.toString(); // 字符串"true"

null和undefined没有tostring方法

String()

可以转换任意类型的字符串

String(value)
+ 加号操作符

object类型

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值