• 生活小妙招免费各类生活中的小问题知识以及音乐简谱等,是你了解世界未知知识的好地方。

如何把JavaScript的基础打好?你有哪些建议?

十万个为什么 空空 2024-4-12 14:30:08 4次浏览

关于问题如何把 JavaScript 的基础打好?你有哪些建议?一共有 2 位热心网友为你解答:

【1】、来自网友【JShaman】的最佳回答:

23 个高级 JS 编程技巧,请笑纳!

1、console.log 输出

console.log(([][[]]+[])[+!![]]+([]+{})[!+[]+!![]])

2、优雅的取随机字符串

Math.random().toString(16).substring(2)

3、if 比较

[“toString”]() === “10”

4、优雅的取整

var a= 2.33 | 0

5、标准 JSON 的深拷贝

var a = {

a: 1,

b: { c: 1, d: 2 }

}

var b=JSON.parse(JSON.stringify(a))

console.log(b)

6、相等

++[[]][+[]]+[+[]] == 10

7、数组去重

[…new Set([1, “1”, 2, 1, 1, 3])]

8、实现一个长度为 m(6)且值都 n(8)的数组

Array(6).fill(8)

9、取出一个数组中的最大值和最小值

var numbers = [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411];

var maxInNumbers = Math.max.apply(Math, numbers);

var minInNumbers = Math.min.apply(Math, numbers);

console.log(maxInNumbers,minInNumbers);

10、高逼格的 Function

var f = new Function(‘a‘, ‘alert(a)‘); f(‘jshaman‘);

Function 构造函数接受的参数中,第一个是要传入的参数名,第二个是函数内的代码。

11、判断奇偶数

对一个数字 &1 可以判断奇偶数,负数也同样适用, num&1

var num=3;

!!(num & 1) // true

!!(num % 2) // true

12、函数默认值

func = (l, m = 3, n = 4 ) => (l * m * n);

func(2) //output: 24

13、JS 代码混淆加密

var a=1;

var b=true;

console.log(a,b);

调用 JShaman 接口对 JS 代码进行混淆加密:

14、字符串比较时间先后

var a = “2014-08-08”;

var b = “2014-09-09”;

console.log(a>b, a<b); // false true

15、使用解构来交换参数数值

有时候你会将函数返回的多个值放在一个数组里。我们可以使用数组解构来获取其中每一个值。

let param1 = 1;

let param2 = 2;

[param1, param2] = [param2, param1];

console.log(param1) // 2

console.log(param2) // 1

16、使用解构删除不必要属性

有时候你不希望保留某些对象属性,也许是因为它们包含敏感信息或仅仅是太大了(just too big)。你可能会枚举整个对象然后删除它们,但实际上只需要简单的将这些无用属性赋值给变量,然后把想要保留的有用部分作为剩余参数就可以了。

下面的代码里,我们希望删除 _internal 和 tooBig 参数。我们可以把它们赋值给 internal 和 tooBig 变量,然后在 cleanObject 中存储剩下的属性以备后用。

let {_internal, tooBig, …cleanObject} = {el1: ‘1‘, _internal:”secret”, tooBig:{}, el2: ‘2‘, el3: ‘3‘};

console.log(cleanObject); // {el1: ‘1‘, el2: ‘2‘, el3: ‘3‘}

17、在函数参数中解构嵌套对象

在下面的代码中,engine 是对象 car 中嵌套的一个对象。如果我们对 engine 的 vin 属性感兴趣,使用解构赋值可以很轻松地得到它。

var car = {

model: ‘bmw 2018‘,

engine: {

v6: true,

turbo: true,

vin: 12345

}

}

const modelAndVIN = ({model, engine: {vin}}) => {

console.log(`model: ${model} vin: ${vin}`);

}

modelAndVIN(car); // => model: bmw 2018 vin: 12345

18、带有多个条件的 if 语句

把多个值放在一个数组中,然后调用数组的 includes 方法。

// bad if (x === “abc” || x === “def” || x === “ghi” || x === “jkl”) {//logic}// better if ([“abc”, “def”, “ghi”, “jkl”].includes(x)) {//logic}

19、条件查找简化

如果我们要基于不同的类型调用不同的方法,可以使用多个 else if 语句或 switch,但有没有比这更好的简化技巧呢?其实是前面的 switch 简化方式一样!

// bad if (type === “test1”) {test1();} else if (type === “test2”) {test2();} else if (type === “test3”) {test3();} else if (type === “test4”) {test4();} else {throw new Error(“Invalid value ” + type);}// better var types = {test1,test2,test3,test4,};types[type] && types[type]();

20、跨行字符串

// bad const data =”abc abc abc abc abc abc
” + “test test,test test test test
“;// better const data = `abc abc abc abc abc abctest test,test test test test`;

21、顺序执行 promise

如果你有一堆异步或普通函数都返回 promise,要求你一个接一个地执行,怎么办?

async function getData() {const promises = [fetch(“url1”), fetch(“url2”), fetch(“url3”), fetch(“url4”)];for (const item of promises) {// 打印出 promiseconsole.log(item);}// better for await (const item of promises) {// 打印出请求的结果 console.log(item);}}

22、打乱数组

const list = [1, 2, 3, 4, 5, 6, 7, 8, 9];

list.sort(() => {

return Math.random() – 0.5;

});

// 输出

(9) [2, 5, 1, 6, 9, 8, 4, 3, 7]

// Call it again

(9) [4, 1, 7, 5, 3, 8, 2, 9, 6]

23、将 Object 属性转成属性数组

const obj = { a: 1, b: 2, c: 3 };

Object.entries(obj);

// 输出

(3) [Array(2), Array(2), Array(2)]

0: (2) [“a”, 1]

1: (2) [“b”, 2]

2: (2) [“c”, 3]

length: 3

Object.keys(obj);

(3) [“a”, “b”, “c”]

Object.values(obj);

(3) [1, 2, 3]

【2】、来自网友【IT 人刘俊明】的最佳回答:

JavaScript 是目前比较流行的编程语言,随着 Node.js 的使用,JavaScript 也正在从传统的前端开发走向后端开发,所以现在不仅前端程序员需要学习 JavaScript,后端程序员也需要掌握一定的 JavaScript 知识。

JavaScript 的内容还是比较多的,对于初学者来说,要想打好一个扎实的 JavaScript 基础需要系统的学习以下内容:

第一部分:JavaScript 基础语法。

基础语法部分的内容比较多,包括类型、变量、字符集、表达式、运算符、流程控制(单分支、多分支、循环等)、对象、数组、函数、类以及正则表达式的相关内容。这部分内容虽然难度并不高,但是需要通过大量的实验才能建立起 JavaScript 的编写思路,另外要习惯 JavaScript 的编写方式。

第二部分:客户端浏览器编程。

这部分内容包括兼容性、可访问性、计时器、对话框、浏览历史、错误处理、文档结构和遍历、属性、表单创建、CSS、事件处理(事件类型、事件处理过程)、jQuery、cookie、持久化数据、图形图像处理等内容。这部分内容细节非常多,也有一定的难度,代码量也有了明显的增加。

第三部分:HTML5 与 JavaScript 结合。

HTML5 是前端开发人员一定要掌握的内容,HTML5 在移动端有大量的使用,所以一定要掌握 JavaScript 与 HTML5 的结合应用。这部分内容包括定位、历史记录管理、消息传递(跨域)、Web Worker、Blob、客户端数据库等内容。

入门 JavaScript 还是比较容易的,实验环境也比较好搭建,另外可以选择一个开发环境方便 JavaScript 的开发,HBuilder、DW、Eclipse(后端开发)等都是不错的选择。

我从事软件开发工作多年,目前主要的研究方向集中在大数据和人工智能领域,也是一名计算机专业的研究生导师,我会陆续在头条写一些关于软件开发方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。

如果有软件开发方面的问题,也可以咨询我,谢谢!

喜欢 (0)