js杂记

一、
Undefined 这个值表示变量不含有值。


可以通过将变量的值设置为 null 来清空变量
二、
你可以通过两种方式访问对象属性:
1.person.lastName;
2.person["lastName"];
三、
如果您把值赋给尚未声明的变量,该变量将被自动作为全局变量声明。


这条语句:


carname="Volvo";
将声明一个全局变量 carname,即使它在函数内执行。
同时在函数外调用这个全局变量需要,使这个函数被执行,不然这个全局变量就不会被创建!
四、
let 允许你声明一个作用域被限制在块级中的变量、语句或者表达式。与var关键字不同的是,它声明的变量只能是全局或者整个函数块的。
function varTest() {
  var x = 1;
  if (true) {
    var x = 2;  // 同样的变量!
    console.log(x);  // 2
  }
  console.log(x);  // 2
}


function letTest() {
  let x = 1;
  if (true) {
    let x = 2;  // 不同的变量
    console.log(x);  // 2
  }
  console.log(x);  // 1
}
五、
switch 语句的执行比较默认是 ===号
六、
严格模式声明
严格模式通过在脚本或函数的头部添加 "use strict"; 表达式来声明。
七、
浮点型数据使用注意事项
JavaScript 中的所有数据都是以 64 位浮点型数据(float) 来存储。


所有的编程语言,包括 JavaScript,对浮点型数据的精确度都很难确定:


var x = 0.1;
var y = 0.2;
var z = x + y            // z 的结果为 0.3
if (z == 0.3)            // 返回 false


为解决以上问题,可以用整数的乘除法来解决:
var z = (x * 10 + y * 10) / 10;       // z 的结果为 0.3
八、
在字符串中直接使用回车换行是会报错的:
var x = "Hello
World!";
//报错
解决办法加转义字符\
九、
void()仅仅是代表不返回任何值,但是括号内的表达式还是要运行,如void(alert("Wornning!"))
十、
函数表达式可以 "自调用"。


自调用表达式会自动调用。


如果表达式后面紧跟 () ,则会自动调用。


不能自调用声明的函数。
(function () {
    var x = "Hello!!";      // 我将调用自己
})();


JavaScript 函数作为一个值使用:


JavaScript 函数可作为表达式使用:


函数定义作为对象的属性,称之为对象方法。
函数如果用于创建新的对象,称之为对象的构造函数。
十一、
以上函数不属于任何对象。但是在 JavaScript 中它始终是默认的全局对象。


在 HTML 中默认的全局对象是 HTML 页面本身,所以函数是属于 HTML 页面。


在浏览器中的页面对象是浏览器窗口(window 对象)。以上函数会自动变为 window 对象的函数。


myFunction() 和 window.myFunction() 是一样的:
十二、
this 是 JavaScript 语言的一个关键字。


它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。比如:
function test() {
    this.x = 1;
}
随着函数使用场合的不同,this 的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。
十三、
全局 变量。


在web页面中全局变量属于 window 对象。


全局变量可应用于页面上的所有脚本。
十四、
在JavaScript中,this通常指向的是我们正在执行的函数本身,或者是指向该函数所属的对象(运行时)
十五、
JavaScript 数组只支持数字索引,非数字索引指的是对象的属性了。
JavaScript 的数组可以看做是特殊的对象(object)


如果该下标值在合法范围内,则无论该下标值是数字还是数字字符串,都一律会被转化为数字使用,即 array["100"] = 0 和 array[100] = 0 执行的是相同的操作。

十六、

  1. 推荐在循环对象属性的时候,使用for...in,在遍历数组的时候的时候使用for...of

  2. for...in循环出的是key,for...of循环出的是value

  3. 所以for...of可以循环字符串,数组

  4. for...in可以循环数组,对象,字符串

十七、new运算符 会根据方法返回值的不同,执行方式是不一样的。

十八、关于js中的遍历

 1. for循环,需要知道数组的长度,才能遍历,

 2. forEach循环,循环数组中每一个元素并采取操作, 没有返回值, 可以不用知道数组长度

3. map函数,遍历数组每个元素,并回调操作,需要返回值,返回值组成新的数组,原数组不变

4. filter函数, 过滤通过条件的元素组成一个新数组, 原数组不变

5. some函数,遍历数组中是否有符合条件的元素,返回Boolean值

6. every函数, 遍历数组中是否每个元素都符合条件, 返回Boolean值

in 不仅可以用来 遍历对象,还可以用来遍历数组, 不过 i 对应与数组的 key值

十九、

Array.from获取的元素并不会实时更新,只会保存第一次获取时的状态(也就是它是一个静态方法)

猜你喜欢

转载自blog.csdn.net/qq_20834787/article/details/79762976