JavaScript-练习题(持续更新)

6 篇文章 0 订阅
3 篇文章 0 订阅
这篇博客深入探讨了JavaScript中的核心概念,包括逗号和for表达式的逻辑,Number()函数的数据类型转换规则,正则表达式中exec()方法的应用,let和const的变量声明,以及模块化在浏览器和服务器端的实现。同时,还介绍了继承的几种方式,匿名函数的作用域特性,以及this的指向和变量、函数的提升现象。
摘要由CSDN通过智能技术生成

一、符号表达式

  1. 逗号表达式只有最后一项是有效的,而for的第二项对应的布尔值决定了循环是否继续
    var k = 0;
    for(var i=0,j=0;i<10,j<6;i++,j++){
        k += i + j;
    }
    console.log(k);
    
    => 30
  2. +是左连接,结果为字符串, -是右连接,结果为number
    "2" + 3 + 4 = "234"
    "2" - 3 - 4 = -5

二、正则表达式

RegExp 对象的主要方法是 exec(),该方法是专门为捕获组而设计的。 exec()接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没有匹配项的情况下返回 null

var str1=new RegExp("e");
str1.exec("hello")

三、let、const变量声明

https://es6.ruanyifeng.com/#docs/le

四、数据类型转换

Number()可以用于任何数据类型的转换。转换规则如下:

1.如果是Boolean值,true和false将分别被转换为1或0.

2.如果是null值,返回0;

3.如果是undefined,返回NaN;

4.如果是字符串则遵循以下规则:

a.字符串只把含数字(包含前面带正号或负号的情况),则将其转换为十进制数值,前导零会被忽略。(例如“011”会变成11);

b.如果字符串中包含有效的浮点格式,则将其转换为相应的浮点数值,前导零会被忽略;

c.如果字符串中包含十六进制格式,则将其转换为相同大小的十进制整数;//number("01f")=31

d.如果字符串是空的,则将其转换为0;//number(" ")=0;

e.如果字符串中包含除以上格式之外的字符,则将其转换为NaN.//number("helloworld")=NaN

5.如果是数值,不用说当然是传啥返啥;

6.如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()方法,然后再次按照前面的规则转换返回的字符串值。

Number()
Number(0)
Number('')
Number('0')
Number(false)
Number(null)
Number([])
Number([0])
=> 0

Number(undefined)
parseInt("")
parseInt(null)
parseInt(undefined))
=> NaN

五、模块化

模块化有利于管理模块间的依赖,更依赖模块的维护

1、浏览器端的js模块化规范:

AMD:由require.js实现,推崇依赖前置

CMD:由sea.js实现,推崇依赖就近

2、服务器端的js模块化规范:

CommonJS:由NodeJS实现。

六、继承

实现继承共6种方式:

原型链继承、借用构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合式继承。

构造函数继承:每次继承都会把父类的所有属性方法全部拷贝一份,而对于公用的方法重复拷贝会浪费内存;只能继承父类的实例属性和方法,不能继承原型属性/方法。

原型链继承:所有对象都公用一份原型属性和方法,对一个类的修改回影响的其他类

组合继承:结合两种继承方式,用构造函数方式继承属性,原型链方式继承方法

七、匿名函数

匿名函数具有全局作用域

八、this指向

方法/函数是由谁(对象) 调用 的,方法/函数内部的 this 就指向谁(该对象)

九、变量、函数提升

函数提升优先级高于变量提升

var a = 10;
function a(){}
console.log(typeof a)
=> "number"

var a;
function a(){}
console.log(typeof a)
=> "function"

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值