JavaScript高级程序设计 笔记 --- 1

又是很久没有写博客了呢,其实本来已经规划了好几篇的,可是懒癌发作,以至于计划搁浅。

近来对未来担忧了起来,看见前端的面试笔试,一堆神奇的问题看得我是一脸懵逼,还有笔者对JavaScript的一些所谓高级用法我也不是很了解,于是就有了如今计划要写的一系列笔记, 《JavaScript高级程序设计》,这一篇就是第一记啦~ 下面开始列出我在阅读书籍的时候觉得比较有用处,值得注意的一些地方~

isNaN

isNaN() 可以检测变量是否可以转成数值,若不行则返回 ture,可行则false。

   isNaN(10)       //false
   isNaN('11')     //false
   isNaN('123r')   //true

如果检测的是一个object,isNaN会先调用Object的 valueOf() 方法,确定其是否可转,不行就再测试 toString()方法,再确认一遍。

数值转换

三个函数: Number(), parseInt(), parseFloat(),


Number("12Hello world!12");  // NaN

Number("");                  // 0

Number('   ');               // 0

Number("0011");              // 11

Number(true);                // 1 

let ob = {valueof:()=>'ww',toString:()=>'213'};

Number(ob)                   // 213



parseInt('12www123')        // 12 解析到非数字就掐断

parseInt('   ')             // NaN

parseInt('22.5')            // 22 解析到非数字之后就掐断,

parseInt("0xA",16);         // 10 第二个参数指定进制

parseInt("070",8);          // 56 



parseFloat("1234blue");     // 1234 (整数)

parseFloat("0xA");          // 0

parseFloat("22.5");         // 22.5

parseFloat("22.34.5");      // 22.34

parseFloat("0908.5");       // 908.5

parseFloat("3.125e7");      // 31250000

+'123' 也能做到Number()的功能

String

  • \n 换行符

  • \t 制表符

  • \b 空格符

  • \r 回车符

  • \f 换页符 // 不过没试出效果

  • \ ( ’ | ” | \ ) 转义符

toString 传参


let num = 10;

num.toString()          // '10'

num.toString(2)         // '1010'

num.toString(8)         // '12'

num.toString(10)        // '10'

num.toString(16)        // 'a'

若怀疑变量可能为null或者为undefined,调用toString()可能会出错,这时候使用String()则可以避免这种情况的发生。


let a = 10;

let b = true;

let c = null;

let d;



String(a)          // '10'

String(b)          // 'true'

String(c)          // 'null'

String(d)          // 'undefined'

当然转String还可以直接这样:let str = a + "";

Object

初始化: let obj = new Object(); or let obj = {};

Object 都有的属性与方法

  • constructor 保存用于创建当前对象的函数,比如上面的obj的构造函数就是 Object().

  • hasOwnProperty(propertyName) 检查给定的属性在当前对象实例中(而不是在实例

的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定(例

如:o.hasOwnProperty(“name”))。

  • isPrototypeOf(object) 检查传入的对象是否是传入对象的原型

  • propertyIsEnumerable(propertyName) 检查给定的属性是否能够使用 for-in 语句

来枚举。与 hasOwnProperty()方法一样,作为参数的属性名必须以字符串形式指定。

  • toLocaleString() 返回对象的字符串表示,该字符串与执行环境的地区对应。

  • toString() 返回对象的字符串表示。

  • valueOf() 返回对象的字符串、数值或布尔值表示。通常与 toString()方法的返回值

相同。

位操作

  • 按位非(NOT) ~ 操作数的负值减 1。
  ~25 = -26
  • 按位与(AND) & 位操作中均为1才为1.
1 & 1 = 1  
1 & 0 = 0  
0 & 0 = 0
  • 按位或(OR) | 有1是1.
1 | 1 = 1
1 | 0 = 1  
0 | 0 = 0
  • 按位异或(OR) ^ 只有一个1才是1.
1 ^ 1 = 0  
1 ^ 0 = 1  
0 ^ 0 = 0
  • 左移 <<
2 << 5 = 64   // 2 * 2^5 = 2 * 32 = 64
7 << 5 = 224  // 7 * 2^5 = 7 * 32 = 224
  • 有符号位的右移 >>
2 >> 1 = 1  // 2 / 2 = 1 
7 >> 1 = 3   // 7 / 2 = 3.5 (精度丢失就是3)
  • 无符号位的右移 >>>
-2 >>> 1 = 2147483647  // 带符号位一起移动了
-7 >> 1 = 2147483644
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值