js基础复习笔记(一)

标识符

命名规则:第一个字符,可以是任意 Unicode 字母(包括英文字母和其他语言的字母),以及美元符号($)和下划线(_)。
第二个字符及后面的字符,除了 Unicode 字母、美元符号和下划线,还可以用数字0-9。

注释

除了单行注释和多行注释外,js还可以兼容html的代码注释

x = 1; <!-- x = 2;
--> x = 3;
//结果只有x=1会执行;

需要注意的是,–>只有在行首才会被当成单行注释,否则会被当成正常运算。

switch

需要注意的是,switch语句后面的表达式,与case语句后面的表示式比较运行结果时,采用的是严格相等运算符(===),而不是相等运算符(==),这意味着比较时不会发生类型转换。

var x = 1;

switch (x) {
  case true:
    console.log('x 发生类型转换');
    break;
  default:
    console.log('x 没有发生类型转换');
}
// x 没有发生类型转换

标签(label)

  1. 跳出特定循环:
top:
  for (var i = 0; i < 3; i++){
    for (var j = 0; j < 3; j++){
      if (i === 1 && j === 1) break top;
      console.log('i=' + i + ', j=' + j);
    }
  }

如果不用标签,break只能跳出内层循环,用了标签可以跳出外层循环。
continue 同理。

  1. 跳出代码块:
foo: {
  console.log(1);
  break foo;
  console.log('本行不会输出');
}
console.log(2);

数据类型

  • 基本数据类型(值类型)
  • number
    在js内部,所有数都是以64位浮点数形式储存的,即使整数也是如此。
1===1.0 //true

JavaScript 提供Number对象的MAX_VALUE和MIN_VALUE属性,返回可以表示的具体的最大值和最小值。
NaN是 JavaScript 的特殊值,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合,一些数学函数的运算结果会出现,0除以0也会得到NaN,它数据类型仍属于Number

    5 - 'x' // NaN
    Math.acos(2) // NaN
    Math.log(-1) // NaN
    Math.sqrt(-1) // NaN
    0 / 0 // NaN
    typeof NaN // 'number'

    NaN === NaN // false 不等于任何值 包括它本身
    Boolean(NaN) // false 布尔当作false
    NaN + 32 // NaN 与任何数的运算得到的都是NaN

Infinity 无穷 有正负

    //特殊用法
    0 * Infinity // NaN
    Infinity - Infinity // NaN
    Infinity / Infinity // NaN
    null * Infinity // NaN
    Infinity / null // Infinity
    //与undefined计算返回的都是0

与数值有关的全局方法:
- parseInt() 将字符串转为整数
如果字符串的第一个字符不能转化为数字(后面跟着数字的正负号除外),返回NaN
- parseFloat()方法用于将一个字符串转为浮点数
- isNaN 判断一个值是否为NaN
isNaN只对数值有效,如果传入其他值,会被先转成数值。比如,传入字符串的时候,字符串会被先转成NaN,所以最后返回true,这一点要特别引起注意。也就是说,isNaN为true的值,有可能不是NaN,而是一个字符串。

      isNaN(NaN) // true
      isNaN(123) // false
      isNaN('Hello') // true

出于同样的原因,对于对象和数组,isNaN也返回true。对于空数组和只有一个数值成员的数组,isNaN返回false(被Number函数转成数值)。
判断NaN更可靠的方法是,利用NaN为唯一不等于自身的值的这个特点,进行判断。

      function myIsNaN(value) {
       return value !== value;
      }
  • isFinite方法返回一个布尔值,表示某个值是否为正常的数值。
    除了Infinity、-Infinity、NaN和undefined这几个值会返回false,isFinite对于其他的数值都会返回true。

  • string
    字符串可以被视为字符数组,因此可以使用数组的方括号运算符,用来返回某个位置的字符(位置编号从0开始)。
    如果方括号中的数字超过字符串的长度,或者方括号中根本不是数字,则返回undefined。
    实际上,无法改变字符串之中的单个字符。
    使用Unicode字符集,所有字符在内部都以Unicode存储。
    每个字符在 JavaScript 内部都是以16位(即2个字节)的 UTF-16 格式储存。

  • boolean

  • undefined和null
    语法效果几乎等价,都表示没有

     undefined == null
     // true
    

区别:null是一个表示“空”的对象,转为数值时为0;undefined是一个表示"此处无定义"的原始值,转为数值时为NaN。

//null可以自动转化成0
Number(null) // 0
5 + null // 5

//undefined转化成NaN
Number(undefined) // NaN
5 + undefined // NaN

布尔值:
undefined、null、false、0、NaN、""或’’(空字符串)会转化成false,其他都为true
注意,空数组([])和空对象({})对应的布尔值,都是true。

  • object
  • symbol(es6)
    类似于标识符
  • 引用数据类型:
    Object
    Array
    Function

运算符

有三种方法可以确定一个值到底是什么类型

  • typeof 运算符
    可以返回一个值的数据类型
    //基本类型返回
typeof 123 // "number"
typeof '123' // "string"
typeof false // "boolean"

//函数返回
function f() {}
typeof f
// "function"

//undefined返回
typeof undefined
// "undefined"

//利用这一点,可以用来检查一个没有声明的变量而不报错。
v
// ReferenceError: v is not defined
typeof v
// "undefined"

//运用
// 错误的写法
if (v) {
  // ...
}
// ReferenceError: v is not defined
// 正确的写法
if (typeof v === "undefined") {
  // ...
}

空数组([])的类型也是object,这表示在 JavaScript 内部,数组本质上只是一种特殊的对象。instanceof运算符可以区分数组和对象。
null 返回object
在这里插入图片描述

  • instanceof 运算符
  • Object.prototype.toString 方法
    返回一个表示对象类型的字符串
    在这里插入图片描述

对象

查看一个对象本身的所有属性

var obj = {
  key1: 1,
  key2: 2
};

Object.keys(obj);
// ['key1', 'key2']

delete命令用于删除对象的属性,删除成功后返回true。

delete obj.p // true

delete命令只能删除对象本身的属性,无法删除继承的属性
所以就算delete返回true ,仍有可能读到值
in运算符用于检查是否包含某个属性

var obj = { p: 1 };
'p' in obj // true
'toString' in obj // true

它不能识别哪些属性是对象自身的,哪些属性是继承的。要用hasOwnProperty判断一下是否为自身属性

var obj = {};
if ('toString' in obj) {
  console.log(obj.hasOwnProperty('toString')) // false
}

在这里插入图片描述
for…in循环用来遍历一个对象的全部属性。(只会遍历可遍历的)
在这里插入图片描述
with:它的作用是操作同一个对象的多个属性时,提供一些书写的方便。(建议不要使用,绑定对象无法判断是全局对象还是obj的一个属性)

var obj = {
  p1: 1,
  p2: 2,
};
with (obj) {
  p1 = 4;
  p2 = 5;
}
// 等同于
obj.p1 = 4;
obj.p2 = 5;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值