JavaScript-一份你的前端入门说明书(计算机专业)

devtools/2025/1/13 7:54:09/

一.简介

1.起源

 JavaScript 起源于 1995 年,当时它主要是为了满足网页交互的需求而被创建。它最初的设计目的是为了让网页开发者能够在网页中添加一些简单的交互效果和动态内容。在那个时期,网页大多是静态的,而 JavaScript 的出现为网页带来了新的活力。Netscape 公司的 Brendan Eich 负责了 JavaScript 的开发工作。起初,它的名字是 LiveScript ,后来为了借助 Java 语言的热度,更名为 JavaScript 。例如,早期的 JavaScript 可以用于验证表单输入,当用户提交表单时,能够在客户端立即检查输入是否符合要求,而无需将数据发送到服务器进行验证,节省了时间和资源。另外,它还可以用于在网页上显示动态的日期和时间,或者根据用户的操作显示或隐藏某些元素。随着时间的推移,JavaScript 不断发展壮大,功能越来越丰富,应用场景也越来越广泛,从简单的网页交互扩展到了 Web 应用开发、服务器端编程(如 Node.js )、移动应用开发等众多领域。

2.ECMAScript 

很多同学可能跟着网上学习,学到最后看到别人公司要求熟悉ES6,一头雾水,ES6是什么?

ES6ECMAScript 6的简称,是JavaScript一种规范.

二.语言基础

1.定义变量

①var(声明范围:函数作用域)

利用var操作符定义的变量会成为包含它的函数的局部变量。比如使用var在一个函数内部定义一个变量,就意味着该变量将在函数退出时候被销毁。

var声明提升

所谓“提升(hoist)”,也就是把所有变量声明自动拉到函数作用域的顶部

function test(){

    var age=26

    var age=36

    var age=46

    console.log(age)

}

test()//46

经典面试题 

for(var i=0;i<10;i++){

   setTimeout(()=>{console.log(i)},1000)

}

//该段代码的输出结果是?

原因:setTimeout 回调函数内部访问的 i 这个变量并不是在定义 setTimeout 时就把 i 的当前值固定下来了。由于 var 声明的变量存在变量提升且不存在块级作用域的特点(在 for 循环中使用 var 声明的 i 实际上是在函数级作用域内的一个变量),所有这 10 次循环中定义的 setTimeout 回调函数实际上共享的是同一个 i 变量。
当 1 秒过去后,这些回调函数开始依次执行,此时它们去获取 i 的值,而这时 for 循环早已结束,i 的值已经变成了 10,所以每个回调函数执行 console.log(i) 时输出的都是 10,总共就会输出 10 个 10。

②let(声明范围:块作用域)

提一个点:块作用域时函数作用域的子集

然后再记住一点就可以:let 没有声明提升!在let声明之前的执行瞬间被称为“暂时性死区”,再次阶段引用任何后面才声明的变量都会抛出ReferenceError.

③const(声明范围:块作用域)

const基本与let一致,重要区别是:const声明变量必须同时初始化变量

需要记住的是:const声明的限制只使用于它指向的变量的引用。换句话说,如果const变量引用的是一个对象,那么修改这个对象内部的属性并不违反const的限制。

数据类型分为基本类型引用类型

2.数据类型

(1)简单数据类型(原始类型):

Number,String,Boolean,Undefined,Null,Symbol(es6)

①Undefined类型:当使用var或者let声明变量但是没有初始化时,就相当于给变量赋予了undefined值。

②Null类型:表示一个空对象指针。在定义将来要保存对象值的变量时,建议使用null来初始化。undefined值是由null值派生而来的,他们“表面上”相等。

(2)复杂数据类型(引用数据类型)

Object(对象)

Array,Function

严格来讲:函数在es当中被认为是对象,并不代表一种数据类型。

存储区别:原始数据类型存储在栈中,引用类型的对象存储在堆中

(3)确定类型

typeof对于原始值很有用,但他对引用值的用处不大。ECMAScrip提供了instanceof操作符。

万能方法:

  • Object.prototype.toString.call() 是 JavaScript 中用来判断数据类型的一种常用方法。它的主要作用是返回传入值的内部属性 [[Class]] 的字符串表示,通常用来做精确的类型判断。

三.变量,作用域,内存

1.原始值和引用值

ES变量中可以包含两种不同的数据类型:原始值和引用值。

原始值就是最简单的数据,引用值则是由多个值构成的对象。

保存原始值的变量是按值访问的,因此我们操作的就是存储在变量的实际值

JavaScript不允许直接访问内存位置,因此也就不能直接操作对象所在的内存空间,在操作对象


http://www.ppmy.cn/devtools/150101.html

相关文章

16.C语言预处理指令详解:#define、#include、#ifdef 等高效用法

目录 1.简介2.define3.undef4.include5. if... endif6. ifdef...endif7.defined 运算符8. ifndef...endif9.预定义宏10.line11.error12.pragma 1.简介 本篇原文为&#xff1a;C语言预处理指令详解&#xff1a;#define、#include、#ifdef 等高效用法。 更多C进阶、rust、pytho…

【程序猿面试题——计算机基础知识和编程】C++结构体的内存对齐是怎么样的?

【程序猿面试题——计算机基础知识和编程】C结构体的内存对齐是怎么样的&#xff1f; 【程序猿面试题——计算机基础知识和编程】C结构体的内存对齐是怎么样的&#xff1f; 文章目录 【程序猿面试题——计算机基础知识和编程】C结构体的内存对齐是怎么样的&#xff1f;前言C 结…

SQLAlchemy: python类的属性值为None,数据为JSON类型,插入数据库为‘ NULL‘字符串,而不是真正的NULL

描述&#xff1a; 最近使用python orm框架SQLAlchemy时&#xff0c;遇到mysql数据库表字段类型为json类型&#xff0c;python实体类属性对应值为None,但是插入数据库后为‘ NULL‘字符串&#xff0c;而不是真正的NULL 实体类&#xff1a; from sqlalchemy import Column, Da…

网络安全-网站协议请求报文(基础篇)

1.web应用程序技术 什么是http协议&#xff1f; HTTP&#xff1a;超文本传输协议。 可以实现客户端通过浏览器获取服务端数据信息&#xff0c;然后通过浏览器显示出来&#xff1b; 客户端可以通过浏览器提交信息到服务器端后台程序&#xff08;数据库服务器、缓存服务器&am…

护网行动——筑牢网络防线的关键战役

图片 往期推荐 "教育漏洞报告平台:助力提升教育信息安全&#xff0c;白帽子们快来注册赢取奖励!" 《OSCP&#xff08;Offensive Security Certified Professiona&#xff09;考证全攻略&#xff1a;网络安全实战认证之旅》 《夸克网盘掘金秘籍&#xff1a;开启财富增…

GPU与CPU:架构对比与技术应用解析

1. 引言 1.1 为什么探讨GPU与CPU的对比&#xff1f; 随着计算技术的不断发展&#xff0c;GPU&#xff08;图形处理单元&#xff09;和CPU&#xff08;中央处理单元&#xff09;已经成为现代计算机系统中最重要的两个组成部分。然而&#xff0c;随着应用场景的多样化和对性能需…

怎么实现Redis的高可用?

大家好&#xff0c;我是锋哥。今天分享关于【怎么实现Redis的高可用&#xff1f;】面试题。希望对大家有帮助&#xff1b; 怎么实现Redis的高可用&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 为了实现 Redis 的高可用性&#xff0c;我们需要保证在发…

OpenCV计算机视觉 08 图像的旋转

图像的旋转 下面是一张小猪佩奇的照片&#xff0c;请进行顺时针90度&#xff0c;逆时针90度&#xff0c;180度旋转 方法一&#xff1a;使用了 NumPy 库的 np.rot90() 函数来实现图像的旋转 np.rot90(img, k-1) 表示将输入的图像 img 顺时针旋转 90 度&#xff0c; np.rot90(…