【技巧】JS代码这么写,前端小姐姐都会爱上你

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 本文介绍了JavaScript编程中的实用技巧,包括解构赋值的多种妙用、数组操作技巧及常用JS功能片段。解构赋值部分涵盖短路语法防错、深度解构及默认值赋值;数组技巧包括按条件添加数据、获取最后一个元素及使用`includes`优化`if`语句;常用功能片段则涉及URL参数解析、页面滚动回顶部及获取滚动距离等。通过这些技巧,提升代码质量和效率。

前言

🍊缘由

JS代码小技巧,教你如何守株待妹

🍍你想听的故事:

顶着『前端小王子』的称号,却无法施展自己的才能

想当年本狗赤手空拳打入前端阵地,就是想通过技术的制高点来带动前端妹子。奈何时不待我,前端妹子成了稀有资源,只剩下抠脚大汉前端大叔。

秉承没有妹子也得继续学习的态度,本狗将实际代码编写中J使用技巧总结。分享给小伙伴们,希望这些姿势知识 能够成为吸引妹子的引路石。

正文

一.JS解构赋值妙用

1.采用短路语法防止报错

解构时加入短路语法兜底,防止解构对象如果为 undefined 、null 时,会报错

const user = null;
// 短路语法,如果user为undefined 、null则以{}作为解构对象
const {
   name, age, sex} = user || {
   };

举例🌰

通过接口获取用户user对象,解构对象信息

❌错误示例

未使用短路语法兜底,不严谨写法

// 模拟后端接口返回user为null时
const user = null;
const {
   name, age, sex} = user;
console.log("用户信息name=", name, "age=", age, "sex=", sex);

// 控制台直接报错
// Cannot destructure property 'name' of 'user' as it is null.

✅正确示例

使用短路语法兜底,严谨写法

// 模拟后端接口返回user为null时
const user = null;
// 加入短路语法,意思为如果user为空则以{}作为解构对象
const {
   name, age, sex} = user || {
   };
console.log("用户信息name=", name, "age=", age, "sex=", sex);

// 控制台打印
// 用户信息name= undefined age= undefined sex= undefined

2.深度解构

解构赋值可以深度解构:嵌套的对象也可以通过解构进行赋值

举例🌰

通过模拟接口获取用户user对象,解构user对象中联系人concat信息

// 深度解构
const user = {
   
    name:'波',
    age:'18',
    // 联系人
    concat: {
   
        concatName:'霸',
        concatAge:'20',
    },
};
const {
   concat: {
   concatName, concatAge}} = user || {
   };
console.log("用户联系人concatName=", concatName, "concatAge=", concatAge);

// 控制台打印
// 用户联系人concatName= 霸 concatAge= 20

3.解构时赋值默认值

解构赋值时可以采取默认值填充

举例🌰

通过模拟接口获取用户user对象,解构user对象时,没有dept科室字段时,可以加入默认值

// 解构时设置默认值
const user = {
   
    name:'波',
    age:'18',
};
const {
   name, age, dept = '信息科'} = user || {
   };
console.log("用户信息name=", name, "age=", age, "dept=", dept);

// 控制台打印
// 用户信息name= 波 age= 18 dept= 信息科


二.数组小技巧

1.按条件向数组添加数据

根据条件向数组中添加数据

举例🌰

设置一个路径白名单数组列表,当是开发环境添加部分白名单路径,若生产环境则不需要添加


// 不是生产环境
const isEnvProduction = false;

// 基础白名单路径
const baseUrl = [
    '/login',
    '/register'
]

// 开发环境白名单路径
const devUrl = [
    '/test',
    '/demo'
]
// 如果是生产环境则不添加开发白名单
const whiteList = [...baseUrl, ...(isEnvProduction? [] : devUrl)];

console.table(whiteList)


// 控制台打印
// Array(4) ["/login", "/register", "/test", "/demo"]

// 是生产环境
const isEnvProduction = true;

// 基础白名单路径
const baseUrl = [
    '/login',
    '/register'
]

// 开发环境白名单路径
const devUrl = [
    '/test',
    '/demo'
]
// 如果是生产环境则不添加开发白名单
const whiteList = [...baseUrl, ...(isEnvProduction? [] : devUrl)];

console.table(whiteList)
// 控制台打印
// Array(2) ["/login", "/register"]

2.获取数组最后一个元素

给到一个数组,然后访问最后一个元素

举例🌰

获取一个数组中最后一个值

const arr = [1, 2, 3, 4];
// 通过slice(-1) 获取只包含最后一个元素的数组,通过解构获取值
const [last] = arr.slice(-1) || {
   };
console.log('last=',last)

// 控制台打印
// last= 4

3.使用 includes 优化 if

灵活使用数组中方法includes可以对if-else进行优化

举例🌰

如果条件a值是 1,2,3时,打印有个男孩叫小帅

一般写法

const a = 1;

// 基本写法
if(a==1 || a==2 || a==3){
   
    console.log('基本写法:有个男孩叫小帅');
}

// 优化写法
if([1, 2, 3].includes(a)){
   
    console.log('优化写法:有个男孩叫小帅');
}

// 控制台打印
// 基本写法:有个男孩叫小帅
// 优化写法:有个男孩叫小帅


三.JS常用功能片段

1.通过URL解析搜索参数

通过页面URL获取解析挂参参数,适用于当前页面需要使用到URL参数时解析使用

JavaDog程序狗

一个低端小气没档次的渣男程序狗

公众号

// 通过URL解析搜索参数

const getQueryParamByName = (key) => {
   
    const query = new URLSearchParams(location.search)
    return decodeURIComponent(query.get(key))
}

const url = "http://javadog.net?user=javadog&age=31"

// 模拟浏览器参数(此处是模拟浏览器参数!!!)
const location = {
   
    search: '?user=javadog&age=31'
}

console.log('狗哥名称:', getQueryParamByName('user'));
console.log('狗哥年龄:', getQueryParamByName('age'));

// 控制台打印
// 狗哥名称: javadog
// 狗哥年龄: 31

2.页面滚动回到顶部

页面浏览到某处,点击返回顶部

// 页面滚动回到顶部
const scrollTop = () => {
   
    // 该函数用于获取当前网页滚动条垂直方向的滚动距离
    const range = document.documentElement.scrollTop || document.body.scrollTop
    // 如果大于0
    if (range > 0) {
   
        // 该函数用于实现页面的平滑滚动效果
        window.requestAnimationFrame(scrollTop)
        window.scrollTo(0, range - range / 8)
    }
}

3.获取页面滚动距离

获取页面滚动距离,根据滚动需求处理业务

// 该函数用于获取当前页面滚动的位置,可选参数target默认为window对象
const getPageScrollPosition = (target = window) => ({
   
    // 函数返回一个包含x和y属性的对象,分别表示页面在水平和垂直方向上的滚动位置。函数内部通过判断target对象是否具有pageXOffset和pageYOffset属性来确定滚动位置的获取方式,如果存在则使用该属性值,否则使用scrollLeft和scrollTop属性。
    x: target.pageXOffset !== undefined ? target.pageXOffset : target.scrollLeft,
    y: target.pageYOffset !== undefined ? target.pageYOffset : target.scrollTop,
})

getPageScrollPosition()

总结

这篇文章主要介绍了JavaScript编程中的几个实用技巧,包括解构赋值的妙用、数组操作以及一些常用的JS功能片段,总结如下:

解构赋值妙用

  • 短路语法防止报错:在解构可能为undefined或null的对象时,使用短路语法(|| {})来避免错误。
  • 深度解构:可以解构嵌套的对象,方便地获取深层属性。
  • 解构时赋值默认值:在解构时可以为未定义的属性提供默认值。

数组小技巧

  • 按条件向数组添加数据:根据条件动态地决定是否向数组添加特定元素。
  • 获取数组最后一个元素:使用slice(-1)获取数组的最后一个元素。
  • 使用includes优化if语句:用includes检查元素是否在数组中,简化条件判断。

JS常用功能片段

  • 通过URL解析搜索参数:创建函数解析URL的查询参数,便于获取URL中的参数值。
  • 页面滚动回到顶部:实现页面平滑滚动回顶部的函数。
  • 获取页面滚动距离:获取页面滚动位置的函数,可用于处理滚动相关的业务逻辑。

🍯猜你喜欢

文章推荐

【工具】珍藏免费宝藏工具,不好用你来捶我

【插件】IDEA这款插件,爱到无法自拔

【规范】看看人家Git提交描述,那叫一个规矩

【工具】用nvm管理nodejs版本切换,真香!

【项目实战】SpringBoot+uniapp+uview2打造H5+小程序+APP入门学习的聊天小项目

【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序

【模块分层】还不会SpringBoot项目模块分层?来这手把手教你!

目录
相关文章
|
28天前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
29天前
|
缓存 前端开发 JavaScript
利用代码分割优化前端性能:策略与实践
在现代Web开发中,代码分割是提升页面加载性能的有效手段。本文介绍代码分割的概念、重要性及其实现策略,包括动态导入、路由分割等方法,并探讨在React、Vue、Angular等前端框架中的具体应用。
|
17天前
|
JavaScript 前端开发 测试技术
在 golang 中执行 javascript 代码的方案详解
本文介绍了在 Golang 中执行 JavaScript 代码的四种方法:使用 `otto` 和 `goja` 嵌入式 JavaScript 引擎、通过 `os/exec` 调用 Node.js 外部进程以及使用 WebView 嵌入浏览器。每种方法都有其适用场景,如嵌入简单脚本、运行复杂 Node.js 脚本或在桌面应用中显示 Web 内容。
51 15
在 golang 中执行 javascript 代码的方案详解
|
25天前
|
JavaScript 前端开发 Java
springboot解决js前端跨域问题,javascript跨域问题解决
本文介绍了如何在Spring Boot项目中编写Filter过滤器以处理跨域问题,并通过一个示例展示了使用JavaScript进行跨域请求的方法。首先,在Spring Boot应用中添加一个实现了`Filter`接口的类,设置响应头允许所有来源的跨域请求。接着,通过一个简单的HTML页面和jQuery发送AJAX请求到指定URL,验证跨域请求是否成功。文中还提供了请求成功的响应数据样例及请求效果截图。
springboot解决js前端跨域问题,javascript跨域问题解决
|
18天前
|
缓存 监控 前端开发
探索前端性能优化:关键策略与代码实例
本文深入探讨前端性能优化的关键策略,结合实际代码示例,帮助开发者提升网页加载速度和用户体验,涵盖资源压缩、懒加载、缓存机制等技术。
|
27天前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
39 5
|
25天前
|
缓存 前端开发 JavaScript
JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式
本文深入解析了JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式(Hash路由和History路由)、优点及挑战,并通过实际案例分析,帮助开发者更好地理解和应用这一关键技术,提升用户体验。
63 1
|
29天前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
35 4
|
1月前
|
Web App开发 缓存 监控
前端性能优化实战:从代码到部署的全面策略
前端性能优化实战:从代码到部署的全面策略
26 1