学习《JavaScript高级程序设计》(二)

JS基本概念

  • 语法

    大小写敏感

  • 标识符:第一个是字母、下划线、美元符号,其他可以是字母、下划线、美元符号、数字。

  • 注释:

//单行  	
 /*  	 
 *多  	 
 *行  	
  */  	
  • 严格模式:strict mode,这是一个编译指示,告诉javascript引擎切换到严格模式。
funtion doSomething(){
"use strict";
//其他
}
  • 关键字和保留字

关键字:可以控制语句的开始和结束。
保留字:还没有成为关键字的,留着以后用。

关键字保留字
breakabstract
caseboolean
catchbyte
continuechar
debuggerclass
defaultconst
deletedebugger
dodouble
elseenum
finallyexport
forextends
iffinal
infloat
instanceofgoto
newimplement
returnimport
switchint
thisinterface
thrownative
trypackage
typeofprivate
varprotected
voidpublic
whileshort
withstatic
sup
synchronized
throws
transient
volatile
  • 变量

     var message;
     //undefined
     var message = 'hi';
     message = 1090;
     //有效但不推荐

var 定义的变量将变成定义改变量的作用域 的局部变量

    function test(){
    var message = "hi";//局部变量
    //message = "hi"; 全局变量,程序正确
    }
    test();
    alert(message);//错误i

未经声名的变量赋值,严格模式下会报错 ReferenceError;

  • 变量由字母,数字,下划线或者美元符号$组成;

  • 第一个字符可以是字母,下划线或美元符号 $ ;

  • 后续的字符可以使字母、数字、下划线或美元符号;

  • 变量名称区分大小写保留字、关键字、JavaScript预定义了很多全局变量和函数不能用作自定义变量名和函数名

  • 约定俗称:标识符要见名知意;

  • 数据类型

  • 五种简单的:

    • Undefine
    • Null
    • Boolean
    • Number
    • Sring
      一种复杂的:
    • Object:本质上是由一组无序的名值对组成。
  • typeof操作符
    返回一个字符串:

    • “undefined”
    • “number”
    • “string”
    • ''boolean"
    • '‘object’
    • “functon”(新的会是 object)
var message = "sad";
console.log(typeof message);//"string"
console.log(typeof (message));//"string"
console.log(typeof 33);//"number"
console.log(typeof false)//"boolean"
console.log(typeof null);//"object"
console.log(typeof /\d+/);//"object"
Undifined
var a ;
console.log(a==undefined)//true
console.log(a===undefined)//true

console.log(undefined == false)//false
console.log(undefined === false)//false
console.log(undefined == true)//false
console.log(undefined === true)//false

Null

逻辑上的空的对象指针

console.log(typeof null);//"object"
console.log(null instanceof Object);//false
//undifined 派生自null
console.log(null==undefined)//true
console.log(null===undefined)//false
Boolean

逻辑上的空的对象指针

console.log(typeof false)//"boolean"
console.log(1 == true)//true
console.log(1 === true)//false
console.log(0 == false)//true
console.log(0 === false)//false
//转换了boolean类型
var message= "dadasdfa";
var mesToBoolean = Boolean(message);
console.log(mesToBoolean );//true
console.log(Boolean(undefined));//false
类型Boolean()返回trueBoolea()返回false
Booleantruefalse
String非空字符串空字符 “”
Number非零数0、NaN
Object任何对象null
Undefineundefine

if语句 自动执行相应的Boolean();

Number

八进制的时候,第一个数字是0,之后的数字不能超过范围,否则会变成十进制。
八进制在严格模式下无效。会抛出错误
var num1= 070//八进制的56
var num2 = 079//十进制的79

十六进制的前两位必须是0x,A~F不分大小写。
算术运算的时候,所有的进制都会转变为十进制。

浮点数需要的内存空间是整数的两倍。

科学计数法:var folatNum = 3.125e7; // 31250000

最高精度为17位小数。浮点数计算会产生舍入误差:这是由于IEEE754标准的通病
0.1+0.2=0.30000000000000004

数值范围,Number.MIN_VALUE,Number.MAX_VALUE

-Infinity(负无穷) Infinite(正无穷)如果数值达到无穷就会无法计算,可以用**isFinite()**判断是否在这个范围,在 true
var result = Number.MAX_VALUE*2;
console.log(isFinite(result))

NaN

Not a Number 特殊的数值,用来表示一个要返回数值的操作,未返回数值,避免报错。不会影响其他代码运行。
NaN和谁都不相等,包括它自己。

isNaN(“aaa”);//true

isNaN(“10”);//false

转换为数值
  1. Number()

    如果是对象,就调用valueOf(), 如果转换的结果是NaN,就调用toString方法。
    null 返回0,undefined 返回 NaN, ""返回0;

  2. parsrInt()

    遇到非字符会停止转化,自动进行十进制转化,第二个参数,表示转化时的基数是多少。
    var num = parseInt(“oxAF”,16) //175
    var num = parseInt(“AF”,16) //175
    ‘’’'返回NaN,字符串返回NaN.

  3. parseFloat()

    能够识别第一个小数点了只解析十进制,如果是整数就会返回整数。

String

转义字符
/t制表符 /b空格 /r回车 /n换行

toString方法返回方法返回字符串的一个副本,null和undifine没有这个方法。

输入参数可以,返回对应进制的字符串。
String()方法:

  • 如果有toString()方法就会调用这个,返回相应结果。
  • null 返回“null”,undefined 返回“undefined”
Object

属性和方法:
constructor:保存构造当前对象的函数
hasOwnProperty(propertyName):用于检查给定的属性是否在当前的对象中,== propertyName==需是字符串。
isPrototypeOf(Object):用于检查传入的对象是否是当前对象的原型。
**prototypeIsEnumerable(prototypeName)**是否可以for in 枚举
toLocaleString():返回对象的字符串,字符串反映对象所在的本地化执行环境
**toString()**返回对象的字符串表示
**valueOf()**返回对象对应的字符串、数值或布尔值表示。通常与toString()的返回值相同。

Symbol(很多属性自带方式的实现基础,可单独开博文)

Symbol(符号)是ECMAScript 6 新增的数据类型,是原始类型

符号就是用来创建唯一记号,进而用作非字符串形式的对象属性

Symbol.for()对每个字符串键都执行幂等操作。第一次使用某个字符串调用时,它会检查全局运行时注册表,发现不存在对应的符号,于是就会生成一个新符号实例并添加到注册表中
后续使用相同字符串的调用同样会检查注册表,发现存在与该字符串对应的符号,然后就会返回该符号实例

**Symbol.keyFor()**来查询全局注册表,这个方法接收符号,返回该全局符号对应的字
符串键。如果查询的不是全局符号,则返回undefined。

let genericSymbol = Symbol();
let otherGenericSymbol = Symbol();
let fooSymbol = Symbol('foo');
let otherFooSymbol = Symbol('foo');
console.log(genericSymbol == otherGenericSymbol); // false
console.log(fooSymbol == otherFooSymbol); // false

let fooGlobalSymbol = Symbol.for('foo'); // 创建新符号
let otherFooGlobalSymbol = Symbol.for('foo'); // 重用已有符号
console.log(fooGlobalSymbol === otherFooGlobalSymbol); // true

// 创建全局符号
let s = Symbol.for('foo');
console.log(Symbol.keyFor(s)); // foo
// 创建普通符号
let s2 = Symbol('bar');
console.log(Symbol.keyFor(s2)); // undefined
操作符
1、自增自减
let s1 = "2";
let s2 = "z";
let b = false;
let f = 1.1;
let o = {
  valueOf() {
  return -1;
}
};
s1++; // 值变成数值3
s2++; // 值变成NaN
b++; // 值变成数值1
f--; // 值变成0.10000000000000009(因为浮点数不精确)
o--; // 值变成-2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值