当前位置: 首页 > article >正文

javascript经典练习题-语法与特性

下面这段精心整理的内容,呈现了一系列丰富多样的练习题集,它们专注于JavaScript编程语言的两个核心方面——语法和特性。这些练习题旨在帮助学习者系统地巩固基础知识,并在实践中不断提升他们的JavaScript编程技能,从而为进一步探索和运用这门强大的编程语言奠定坚实的基础。

一、基础语法

‌函数返回值‌

若函数无明确返回值或调用无参 return,其返回值是?

‌答案:‌ undefined

数字精度问题‌

var a = 111111111111111110000, b = 1111;
console.log(a + b); 

‌答案:‌ 111111111111111110000(因超出 2^53 精度范围,结果截断)‌

‌错误类型‌

错误分为语法错误和?

‌答案:‌ 运行错误(异常)‌

二、函数与作用域

‌闭包应用‌

实现累加函数 addNum,每次调用返回累加结果:

var addNum = (function() {
  let result = 0;
  return function(num) { return result += num; };
})();

‌示例:‌ addNum(10) → 10,addNum(12) → 22 ‌

‌this 指向‌

以下代码中 this 的指向是?

function test() { console.log(this); }
test(); 

‌答案:‌ 全局对象(如 window 或 global)‌

‌箭头函数特性‌

箭头函数与普通函数的 this 区别是?

‌答案:‌ 箭头函数无自身 this,继承外层上下文

三、对象与数组

‌数组去重‌

编写函数去重数组,返回新数组。
‌示例:‌

function unique(arr) { return [...new Set(arr)]; } 

以下代码输出结果:

[1, 2, 3].map(x => x * 2); 
[1, 2, 3].forEach(x => x * 2); 

‌答案:‌ [2, 4, 6] 和 undefined(forEach 无返回值)

四、进阶特性

‌arguments 对象‌

关于 arguments 的描述错误的是?

‌答案:‌ arguments 是标准数组(实际为类数组对象)

‌with 语句作用‌

with 语句主要用于?

‌答案:‌ 临时扩展作用域链(通常不推荐使用)

‌数组方法 reverse‌

调用 [].reverse() 的返回值是?

‌答案:‌ 原数组的引用(若空数组则为 [])

五、编程题

模块化

创建两个文件,一个是模块文件,导出一个函数,另一个文件导入这个模块并使用该函数。

module.js (模块文件)
export function add(a, b) {
    return a + b;
}

main.js (主文件)
import { add } from './module.js';
console.log(add(5, 3)); // 输出: 8

解构赋值

使用解构赋值从数组和对象中提取值,并输出结果。

// 数组解构
const arr = [1, 2, 3];
const [first, second] = arr;
console.log(first, second); // 输出: 1 2

// 对象解构
const obj = {x: 10, y: 20};
const {x, y} = obj;
console.log(x, y); // 输出: 10 20

Promise使用

编写一个返回 Promise 的函数,该函数模拟网络请求,成功后返回一个字符串,失败时返回一个错误。
javascript

function fetchData(success = true) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            if (success) {
                resolve("成功获取数据!");
            } else {
                reject("获取数据失败!");
            }
        }, 1000);
    });
}

// 使用
fetchData().then(console.log).catch(console.error); // 输出: "成功获取数据!"

‌回文字符串判断‌

编写函数判断字符串是否为回文:

function isPalindrome(str) {
    return str === str.split('').reverse().join('');
} 

‌示例:‌ “madam” → true

‌斐波那契数列‌

计算第 n 项斐波那契数:

function fibonacci(n) {
    return n <= 1 ? n : fibonacci(n-1) + fibonacci(n-2);
} 

http://www.kler.cn/a/566632.html

相关文章:

  • word转换为pdf后图片失真解决办法、高质量PDF转换方法
  • HTML 基础 (快速入门)详细步骤和示例
  • 编程小白冲Kaggle每日打卡(17)--kaggle学堂:<机器学习简介>随机森林
  • UniApp 中封装 HTTP 请求与 Token 管理(附Demo)
  • 运维安全之Linux网络安全(iptables)
  • Spring Boot Admin 踩坑
  • JWT+redis实现令牌刷新优化方案
  • esp8266 rtos sdk开发环境搭建
  • 如何使用大模型、知识库和AI工作流创建AI应用(扣子平台)
  • element中el-table表头通过header-row-style设置样式
  • springboot之HTML与图片生成
  • win本地vscode通过代理远程链接linux服务器
  • 若依spring框架升级到JDK17 + spring boot3 + spring framework6的趟坑记录
  • 3.2实验filebeat->logstash->es
  • 爬虫:mitmproxy抓包工具的使用和实时抓包处理案例
  • DeepSeek开源周第二弹!DeepEP:解锁混合专家模型的高效通信之钥
  • 在Spring Boot项目中将中文转换为拼音:从入门到实践
  • 第一个Vue项目笔记(待更新)
  • Spring 源码硬核解析系列专题(十):Spring Data JPA 的 ORM 源码解析
  • 网络运维学习笔记(DeepSeek优化版)008网工初级(HCIA-Datacom与CCNA-EI)STP生成树协议与VRRP虚拟路由冗余协议