JavaScript学习笔记:1.JavaScript简介

JavaScript学习笔记:1.JavaScript简介

JavaScript学习笔记:1.JavaScript简介

打开网页时,弹出的欢迎弹窗、滑动时的平滑动画、点击就刷新的投票按钮——这些让静态页面变得生动有趣的互动,背后都藏着同一个“幕后功臣”:JavaScript(简称JS)。这门诞生于网页的脚本语言,如今早已跳出浏览器的“舒适区”,在服务器、手机App、智能设备等多个领域发光发热。今天就来聊聊,这门既灵活又强大的语言,到底是什么来头?

一、什么是JavaScript?——不止于“网页互动”

简单说,JavaScript是一门跨平台、面向对象的脚本语言。先拆解这两个关键属性,你就懂了:

  • 「跨平台」:不管你用Chrome、Firefox还是Edge浏览器,甚至用Node.js跑在服务器上,JS代码都能正常工作——就像一部好电影,在电影院、电脑、手机上看都不影响体验。
  • 「面向对象+脚本语言」:不用像Java、C++那样写复杂的类声明、编译步骤,直接写代码就能运行;同时它又能创建对象、实现继承,兼顾了灵活性和功能性。

JS的核心使命是“让网页可交互”,但它的能力远不止于此:

  • 客户端(浏览器里):操控网页的“骨架”(DOM)——比如修改文章标题、隐藏广告弹窗、验证表单输入(比如提醒你“手机号格式不对”),甚至做复杂的Canvas动画、游戏。
  • 服务器端(Node.js):对接数据库、处理文件、实现实时通信(比如微信网页版的消息同步)——相当于给网站装上“大脑”,不再只是单纯展示内容。

它的组成也很清晰:就像一套“工具箱”,包含「核心语言元素」(运算符、if-else、循环这些基础操作)和「标准库」(比如处理日期的Date、做数学计算的Math、操作数组的Array),再加上不同环境的“扩展工具”(浏览器的DOM操作、Node.js的数据库工具),就能应对各种场景。

二、和Java的“误会”:名字像,实则毫无血缘

很多初学者都会被名字误导,以为JavaScript是Java的“小弟”——其实二者的关系,就像“熊猫”和“熊猫烧香”:除了名字沾边,本质上毫无关联。

用一张“灵魂对比表”,看懂它们的核心区别:

维度JavaScriptJava
继承方式原型继承:对象直接继承原型,想加属性就加(比如给一个对象临时加个age: 18类继承:必须先定义类,实例不能随便加属性
变量类型动态类型:不用声明“这是数字/字符串”,let a = 10a = "hello"随便换静态类型:必须声明类型,int a = 10就不能改成字符串
运行方式脚本语言:直接解释运行,不用编译编译型语言:先编译成字节码,再运行
核心定位灵活多变,主打“快速实现互动”严谨稳定,主打“大型应用开发”

一句话总结:Java是“穿西装的严谨工程师”,讲究规则和类型安全;JavaScript是“穿卫衣的创意达人”,追求灵活和快速落地。当年JS改名,只是为了蹭Java的热度,没想到这个“误会”持续了几十年~

三、背后的“规矩”:ECMAScript到底是什么?

你可能听过“ES6”“ES2020”这些名词,它们和JavaScript是什么关系?答案是:ECMAScript是JavaScript的“语法说明书”

因为不同浏览器(Chrome、Firefox)都要实现JavaScript,如果没有统一标准,可能会出现“同一段代码在Chrome能跑,在Firefox就报错”的情况。这时ECMA国际(一个标准化组织)站了出来,制定了ECMAScript规范(文档编号ECMA-262),规定了JS该有哪些功能、语法规则是什么。

简单说:

  • ECMAScript = 语言的“官方规则”(比如必须支持let变量、箭头函数()=>{});
  • JavaScript = 浏览器/Node.js根据规则实现的“产品”(包含规则里的所有功能,还加了DOM操作、数据库交互等扩展)。

所以我们写代码时,不用纠结“这个功能浏览器支不支持”——只要是ECMAScript标准里有的,现代浏览器基本都实现了。

四、5分钟入门:不用装软件,浏览器就能玩

学习JS不用复杂的配置,你的浏览器就是“最佳IDE”。跟着做,5分钟就能写出第一个JS程序:

  1. 打开任意现代浏览器(Chrome、Edge、Firefox都可以);
  2. 按F12(或右键“检查”),调出“开发者工具”,切换到“控制台(Console)”标签;
  3. 在输入框里直接写代码,按回车就能运行:这时浏览器会弹出“你好,JS新手!”的弹窗——恭喜你,写出了第一个有互动的JS代码!
    • 试试简单计算:输入2 + 2,回车出4(像计算器一样);
    • 试试修改网页:输入document.title = "我把网页标题改了!",回车后看浏览器标签栏,标题真的变了;

试试互动弹窗:复制这段代码,粘贴进去回车:

(function(){"use strict";functiongreetMe(yourName){alert(`你好,${yourName}!`);}greetMe("JS新手");})();

这个控制台就像“草稿纸”,可以随时测试代码效果,新手入门完全不用怕出错~ 文档里提到的"use strict"(严格模式),简单理解就是“让JS少犯低级错误”,比如禁止未声明的变量,后续写代码加上就好。

五、最后:JS的学习之路,从“玩起来”开始

如果你想深入学习JS,MDN(就是这篇文档的来源)是最靠谱的“免费老师”:

  • 新手先看「学习Web开发」专区,补全HTML、互联网基础;
  • 再看「JavaScript指南」(就是本文的原文),系统了解语言特性;
  • 熟练后查「JavaScript参考」,深入单个函数、对象的用法。

JS的特点是“入门容易,精通难”——简单的互动几行代码就能实现,但要写出高效、安全的代码,需要掌握原型链、闭包、异步编程等知识点。但没关系,先从控制台“玩起来”,感受它让网页“活过来”的魔力,再一步步深入就好~

最后想说:JavaScript不是“小打小闹”的语言,它是前端开发的核心,也是全栈开发的必备技能。从静态网页到复杂应用,从浏览器到服务器,它无处不在。现在就打开控制台,写下你的第一行JS代码,开启这段有趣的编程之旅吧!

Read more

智能指针:告别内存泄漏的利器----《Hello C++ Wrold!》(27)--(C/C++)

智能指针:告别内存泄漏的利器----《Hello C++ Wrold!》(27)--(C/C++)

文章目录 * 前言 * 智能指针的作用 * 智能指针的实现和原理 * 库里面的智能指针 * std::auto_ptr * auto_ptr的模拟实现 * std::unique_ptr * unique_ptr的模拟实现 * std::shared_ptr * shared_ptr的模拟实现 * shared_ptr的一个弊端 * std::weak_ptr * weak_ptr的模拟实现 * 删除定制器 * 作业部分 前言 在 C++ 编程中,动态内存管理始终是开发者面临的核心挑战之一。手动使用new分配内存、delete释放内存的模式,不仅需要开发者时刻关注内存生命周期,更可能因疏忽导致内存泄漏(忘记调用delete)、二次释放(重复调用delete),或是在异常抛出时因执行流跳转跳过delete语句等问题 —— 这些隐患轻则导致程序性能退化,重则引发崩溃或不可预期的运行错误,成为项目中难以排查的 “隐形 bug”。 为解决这一痛点,C++ 标准库引入了智能指针这一核心工具。

By Ne0inhk
C++幻象:内存序、可见性与指令重排

C++幻象:内存序、可见性与指令重排

C++ 井发的假象:内存序、可见性与指令重排 写在前面:当你第一次把 std::atomic、memory_order 这些词读到手软时,可能会觉得这是 OS 或硬件工程师的专属领域。但其实理解内存模型并不需要掌握每一条 CPU 手册的汇编,只要抓住核心概念与工程实践,你就能写出既高效又安全的并发代码。 本文面向有一定 C++ 并发基础的读者(知道线程、互斥量、基本的 std::atomic 用法),但想把“为什么这样”弄清楚。我们会从 std::atomic 的语义出发,讲清 CPU cache coherence、内存屏障(fence)、指令重排 和 happens-before 的关系——不是空洞的定义,而是大量实战例子、容易踩的坑和调试技巧。文风尽量自然、通俗,

By Ne0inhk
初学二叉搜索树踩坑多?C++ 从原理到代码,搞定增删查全流程

初学二叉搜索树踩坑多?C++ 从原理到代码,搞定增删查全流程

🎬 个人主页:Vect个人主页 🎬 GitHub:Vect的代码仓库 🔥 个人专栏: 《数据结构与算法》《C++学习之旅》《计算机基础》 ⛺️Per aspera ad astra. 文章目录 * 1. 二叉搜索树相关概念 * 2. 二叉搜索树的操作 * 2.1. 查找节点 * 2.2. 插入节点 * 2.3. 删除节点 * 3. 二叉搜索树的实现 * 4. 二叉搜索树的应用 * 4.1. K模型 * 4.2. KV模型 1. 二叉搜索树相关概念 如下图所示,二叉搜索树(binary search tree)满足下列条件: 1. 对于根节点,左子树中所有节点的值<根节点的值&

By Ne0inhk
gflags+spdlog实战:C++命令行参数与高性能日志的极致搭配行动指南

gflags+spdlog实战:C++命令行参数与高性能日志的极致搭配行动指南

文章目录 * 本篇摘要 * 一.gflags 介绍及简单使用 * 简单介绍 * 安装过程 * gflags简单使用 * `google::ParseCommandLineFlags` 介绍: * 使用方式 * 1·直接使用默认的参数 * 2·使用命令行参数 * 3·使用配置文件输入 * 使用参考 * 二.Spdlog组件介绍及简单使用 * 简单介绍 * 安装过程 * spdlog 简单使用 * 基于spdlog使用的二次封装(默认同步日志器) * 基于spdlog总结 * 总结文本查询小技巧 * 三.gtest介绍使用 * 四.本篇小结 本篇摘要 本文介绍gflags命令行参数解析库(轻量高效、类型安全)与spdlog高性能日志库(同步/异步、多平台),涵盖安装、基础使用及二次封装等帮助C++项目灵活配置与高效日志管理。 一.gflags 介绍及简单使用 简单介绍 Google 开源的命令行参数解析库,

By Ne0inhk