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

js基础和数据类型

1、js的四种输出语句

alert('弹出警告框')

prompt('输入框,提示内容')

write('页面输出内容')

console.log('控制台输出内容')

2、基本语法

定义变量:var 变量名 = 值;

定义变量:let 变量名 = 值;

var和let的区别:

var可以重复声明,在var声明前使用该变量为undefined,var声明的全局对象在window下也可以访问

let不能重复声明,只在其所在的代码块{}中生效,在let声明前使用该变量会报错ReferenceError,let声明的全局对象不会在window下

// 块级作用域示例 if (true) { let x = 10; var y = 20; } console.log(y); // 20(var 可在块外访问) console.log(x); // ReferenceError: x is not defined(let 仅在块内有效) // 暂时性死区示例 console.log(a); // ReferenceError: Cannot access 'a' before initialization let a = 5; // 循环中的正确使用(避免闭包问题) for (let i = 0; i < 3; i++) { setTimeout(() => console.log(i), 0); // 输出: 0, 1, 2 } // 若用 var,则输出三个 3

定义常量:const 常量名 = 值;

严格模式:'use strict';

3、数据类型

原始类型:number(数值),string(字符串),boolean(布尔值),null(空),undefined(未定义),symbol(独一无二的值),bigint(大整数)

typeof会返回的类型:以上七种,其中null会返回object,还有一个function,一共八种

引用类型(也叫对象类型):object(对象),array(数组),function(函数),date(日期),RegExp(正则表达式),Error(错误对象),JSON(对象),math(不属于引用类型,但它是一个对象)

var a= 10; var b = a; a=11; console.log(b);// 10 var c = [1,2,3] var d = c; c.push(4); console.log(d);// [1,2,3,4]

其他类型:NaN(不是数字),infinity(无穷大)

console.log('abc'*5);//NaN console.log(1/0);//Infinity

es6中提供的数据类型:symbol(独一无二的值),

set(唯一值的集合,支持任意类型,并自动去重,但是没有索引值),

WeakSet(只能存储对象类型的弱引用,弱引用就是一个对象如果只用了WeakSet,并没有其他强引用,该对象会自动被进行垃圾回收;不能循环,没有size,不支持clear,只可以add,has,delete,ie不支持),

map(键值对集合,Map 支持任意类型键,Object 仅支持字符串/Symbol),

WeakMap(键必须是对象的弱引用的集合,不能循环,没有size,不支持clear,只可以set,get,has,delete,ie不支持)

const arr = [1, 2, 2, 3, 4, 4]; const unique = [...new Set(arr)]; console.log(unique);// [1, 2, 3, 4] const map = new Map([['a', 1], ['b', 2]]); console.log(map);//Map(2){'a' => 1, 'b' => 2}

4.类型转换

数值转换为字符串:String,toString()

const a = 123; console.log(a+1);//124 console.log(String(a));// 123 console.log(String(a)+1);//1231 console.log(a.toString());// 123 console.log(a.toString()+1);//1231

字符串转数值:Number(),用+运算符也可以将字符串转换为数字,如果字符串不能转换为数字则返回NaN

const a = '123'; console.log(a+1);//1231 console.log(Number(a));// 123 console.log(Number(a)+1);// 124 var b = +a; console.log(b);//123 var c = 'ccc'; console.log(Number(c));// NaN

5、检验数据类型

typeof() 检验原始类型和对象,返回数据类型

console.log(typeof(123));//number console.log(typeof('abc'));// string console.log(typeof(function(){}));// function console.log(typeof({}));// object

isNaN() 检验是否不是数字,返回布尔值

console.log(isNaN(123));//false console.log(isNaN('abc'));// true

instanceof() 检验是否为引用对象,返回布尔值

console.log([] instanceof Array); // true console.log(new Date() instanceof Date); // true console.log({} instanceof Object); // true console.log('hello' instanceof String); // false console.log(new String('hello') instanceof String); // true 包装成对象适用

对象的constructor属性

var arr = [1,2,3]; var json = {}; console.log(json.constructor === Object); // true console.log(arr.constructor === Array); // true

Array.isArray() 检验是否为数组

let arr = [1,2,3]; console.log(Array.isArray(arr));//true

6、记录问题

1、null和undefined的区别?

null是定义了值,而值为空,undefined是还未被定义值

2、typeof和instanceof的区别

typeof可以检验原始数据类型和对象,返回的是数据类型,而instanceof只可以检验是否为引用对象,检查右侧构造函数的prototype是否出现在左侧对象的原型链上,返回的是布尔值。

日常开发中,基本类型判断用typeof,对象/数组/自定义类实例判断 → 用instanceof,推荐使用Object.prototype.toString.call()进行判断

http://www.cnnetsun.cn/news/1248907.html

相关文章:

  • 从奖励驱动到目标驱动:AI Agent的范式演变与融合
  • Java的三大特性:封装、继承、多态
  • SQL概念及DDL
  • AI Agent 两大 “神辅助” 对决:MCP vs Skills 谁更能打?
  • 告别“代码民工”,拥抱“智能体架构师”:我的 2025 复盘与 2026 OpenClaw+VibeCoding 实战宣言
  • sqlilabs less-3 笔记
  • 从全网爆火的 OpenClaw 说起:为什么“个人数字员工”撑不起企业的 AI 野心?
  • OpenClaw(龙虾) + Qwen3-32B 踩坑实录:那些文档里没写的“血泪教训”
  • 贴心售后RFID设备资深厂家
  • 平滑加权轮询负载均衡的底层逻辑
  • . 使用TFloatKeyAnimation关键帧创建弹跳球动画 . 使用TColorKeyAnimation关键帧动画眩目背景变换 ...
  • Docker Desktop里搭建RabbitMq ..集群的保姆级教程
  • 2026年AI写作与创作利器:7款高效工具助你事半功倍
  • 写一段提取PDF单线图材料表的代码,能支持各种格式的PDF
  • 彼岸花会盛开在理想的他乡
  • Spring AI + RAG 从 0 到 1 落地:本地知识库 + 联网搜索,一套代码直接跑通
  • 推理框架极简入门与实战指南(非常详细),Nano-vLLM从入门到精通,收藏这一篇就够了!
  • 14K Star开源RAG项目实战全解(非常详细),检索优化从入门到精通,收藏这一篇就够了!
  • windows 安装openclaw的优势
  • 第 21 篇、为什么 Docker Compose 的 depends_on 根本管不住服务启动顺序?90% 的新手都搞错了
  • OpenClaw 腾讯云 + 火山方舟(Volcengine Ark)完整安装与扩展教程
  • HLS.js 原生开发!m3u8live.cn打造最贴合项目的 M3U8 在线播放器
  • 给Redis增加密码
  • 项目实训记录
  • CMake构建学习笔记-iconv库的构建
  • Flutter 三方库 graph_kit 的鸿蒙化适配指南 - 让逻辑治理回归“拓扑之美”,打造鸿蒙应用专家级的图算法与依赖治理中台
  • STM32F系列兼容西门子S7 200PLC源码 CPU:STM32F103RCT6(或其他S...
  • 【拼多多内推】2027届实习生
  • mac电脑查看安装的mysql版本以及启动
  • 使用 C++、YOLO 和 ONNX Runtime 实现实时目标检测的完整教程整理与代码实现指南。