复习 - js基础语法
今天继续复习了js基础语法 最后一天了 学完了进入dom bom的复习 今天发现了很多经典案例 我都不知道一个随笔放的完不 逻辑性感觉还是蛮强的 主要就是作用域 对象 内置对象等一些的操作嘛 话不多说直接上代码 都在代码里了哈哈
首先是一个关于预解析的问题 感觉在这里有点小坑 以后要注意了
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 请描述下面代码的输出结果以及运行原因
var num = 1;
function demo(){
console.log(num);
function demoSon(){
console.log(num);
num = 3;
console.log(num);}
var num = 2
demoSon();}
demo(); // 很明显这是一个关于预解析的问题 就是会把变量声明和函数声明提升到当前作用域的最前面 那么全局作用域下声明了一个num 函数也声明了 在看函数里面的
// 注意!!! 这里第一步我就错了 我以为会打印1出来 局部作用域下先是打印num值 这里遵循一个作用域链的原则一级一级往上查找 找最近的一个找到过后
// 无论是否有值那都是他了 所以这里有个变量提升 提上来后未赋值 所以第一个num打印出来是undefined 后面继续遵循原则 依次打印出 2 3
</script>
</body>
</html>
然后是一个函数内置对象混用的问题 遇到的第一个有点挑战性的题
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
/* 函数名:getResult 函数调用方式:getResult(数值1,数值2,数值3,数值4.....) 函数功能:返回值是一个对象,这个对象有sum, max, min, averages等属性,分别表示实参的总和、最大值、最小值、平均数等 */
function getResult() {
var sum = 0,
max = arguments[0],
min = arguments[0],
averages = 0
for (k in arguments) {
sum += arguments[k]
if (arguments[k] > max) {
max = arguments[k]
} else if (arguments[k] < min){
min = arguments[k]
}
}
averages = sum / arguments.length
return {
sum : sum,
max : max,
min : min,
averages : averages
}
}
console.log(getResult(1, 3, 10, 5));
// 我觉得这个题有点挑战
</script>
</body>
</html>
然后是一个日常觉得进步了的问题 以前做这个硬是没做出来 可能逻辑盘对了 但代码始终没放对位置
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
/* 以下有两个数组,一个数组arr是班级里所有的学员的名称,一个数组currentArr是提交了每日反馈的学员名单,请创建一种算法,把未提交每日反馈的学员筛选出来 */
var arr = ["张瑞淑", "徐海涛", "谢岗岗", "薛鹏", "魏明杨", "党婷", "熊飞", "郑翠翠", "李航卫", "屈涛", "汪孝双", "代攀飞", "武志钰", "王亚龙", "周芙榕", "李涛", "郝颖", "文冲洋", "王旭拯", "胡佳豪", "寇晓丽", "马晓晗","王思聪", "张绿", "李德", "郑萍", "张凯", "张嘉成", "葛云侠", "杨磊", "任变", "景德", "高卷林", "刘益凡", "赵娜", "陈章鸣", "张荣召", "赵凯旋", "程倩倩", "脱朝平", "刘吉利", "郭苗苗", "马建峰", "潘瑞", "闫翔", "马晨", "李轩轩", "黄红梅", "刘书彬", "罗强", "刘东","王可可" ,"陈泽文", "李嘉琪", "段佳琦", "黄燕", "邱淑鸿", "宋翔宇", "王波", "樊琳", "王兆国", "许成", "李兴"];
var currentArr = ["张瑞淑", "徐海涛", "谢岗岗", "薛鹏", "魏明杨", "党婷", "熊飞", "郑翠翠", "李航卫", "屈涛", "汪孝双", "代攀飞", "武志钰", "王亚龙", "周芙榕", "李涛", "郝颖", "文冲洋", "王旭拯", "胡佳豪", "寇晓丽", "马晓晗", "张绿", "李德","郑萍", "张凯", "张嘉成", "葛云侠", "杨磊", "任变", "景德", "高卷林", "刘益凡", "赵娜", "陈章鸣", "张荣召", "赵凯旋", "程倩倩", "脱朝平", "刘吉利", "郭苗苗", "马建峰", "潘瑞", "闫翔", "马晨", "李轩轩", "黄红梅", "刘书彬", "罗强", "刘东", "陈泽文", "李嘉琪", "段佳琦", "黄燕", "邱淑鸿", "宋翔宇", "王波", "樊琳", "王兆国", "许成", "李兴"];
var newArr = []
for (var i = 0; i < arr.length; i++) {
if (flag) {
newArr[newArr.length] = arr[i - 1]
}
var flag = true
for (k in currentArr) {
if (currentArr[k] === arr[i]) {
flag = false
break
}
}
}
console.log(newArr); // 这个题真的 很能看出些问题 我上一次做这个是想了一两天硬是做不出来 这一次再一做也花了点时间 四十分钟左右 但还好是做出来了 复习一次能看出我太太菜了 也变强了哈哈哈
</script>
</body>
</html>
来了 这个可能有点长 是一个关于字符串内置对象的一些操作 要动点小脑筋
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
/* 字符串:“abaasdffggghhjjkkgfddsssss3444343”,问题如下: 1、 字符串的长度 2、 取出指定位置的字符,如:0,3,5,9等 3、 查找指定字符是否在以上字符串中存在,如:i,c ,b等 4、 替换指定的字符,如:g替换为22,ss替换为b等操作方法 5、 截取指定开始位置到结束位置的字符串,如:取得1-5的字符串 6、 找出以上字符串中出现次数最多的字符和出现的次数 7、 遍历字符串,并将遍历出的字符两头添加符号“@” */
var str = 'abaasdffggghhjjkkgfddsssss3444343'
// 1.
console.log(str.length);
// 2.
console.log(str.charAt(0));
console.log(str[3]);
console.log(str.charCodeAt(5));
// 3.
function getExist(x, str) {
var flag = false
for (var i = 0; i < str.length; i++) {
if (str.charAt(i) == x) {
flag = true
break
}
}
return flag
}
console.log(getExist('b', str));
// 4.
str = str.replace('g', '22')
str = str.replace('ss', 'b')
console.log(str); // 5.
console.log(str.substr(0, 5));
console.log(str.slice(0, 5)); // 6.
var max = 0
var counts = 0
var temp
var newArr = str.split('')
for (var i = 0; i < newArr.length; i++) {
counts = 0
for (var j = 1; j < newArr.length; j++) {
if (newArr[i] == newArr[j]) {
counts++
newArr.splice(j,1)
}
}
if (counts > max) {
max = counts
temp = newArr[i]
}
}
console.log(temp, max);
// 这个题 十分的有挑战性 我感觉虽然做出来了 但代码有点冗余 但又找不到删减点
// 7.
var newStr = ''
for (var i = 0; i < str.length; i++) {
newStr += str.substr(i, 1)
newStr += '@'
}
newStr = '@' + newStr
console.log(newStr);
</script>
</body>
</html>
最后来一个经典题目随机数的一个应用 还有好多我没放上来 大多数是选了一些比较卡我的 我的代码肯定是有冗余的 但是我目前还是想不出更简单的方式 看有没与高人能帮我指出下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
/* 从以下学员名单中随机选出4个学员: var arr = ["鹿晗","王俊凯","蔡徐坤","彭于晏","周杰伦","刘德华","赵本山"]; 注意:不要有重复的学员 */
var arr = ["鹿晗","王俊凯","蔡徐坤","彭于晏","周杰伦","刘德华","赵本山"]
function getIntRandom(max, min) {
min = Math.ceil(min)
max = Math.floor(max)
return Math.floor(Math.random() * (max - min + 1)) + min
}
var newArr = new Array()
var x = 6
for (var i = 0; i < 4; i++) {
var temp = getIntRandom(0, x)
newArr[newArr.length] = arr[temp]
arr.splice(temp, 1)
x--
}
console.log(newArr);
// 这个题也是当初卡了我很久 现在一做就很快做出来了 复习还是有用的 尽快复习完 马上进入新阶段了
</script>
</body>
</html>
复习 - js基础语法的更多相关文章
- JavaScript进阶 - 第2章 你要懂的规则(JS基础语法)
第2章 你要懂的规则(JS基础语法) 2-1什么是变量 什么是变量? 从字面上看,变量是可变的量:从编程角度讲,变量是用于存储某种/某些数值的存储器.我们可以把变量看做一个盒子,盒子用来存放物品,物品 ...
- 【JS基础语法】---学习roadmap---6 parts
JS基础语法---roadmap Part 1 - 2: Part 3 - 4: Part 5 - 6
- vue学习笔记:vue.js基础语法
一.VUE 概述 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅 ...
- 9.12/ css3拓展、js基础语法、程序基本知识、数据类型、运算符表达方式、语句知识点
css3拓展: <display:none> 将某个元素隐藏 <visibility:hidden> 也是将某个元素隐藏 <display:block&g ...
- JS基础语法(二)
目录 JavaScript基础语法(二) 八. 函数 1. 函数的概念 2. 函数的使用 声明函数 调用函数 3. 函数的封装 4. 函数的参数 函数的参数匹配问题 5. 函数返回值 6. argum ...
- JavaScript01 js基础语法,数据类型
JavaScript的概述: 1.组成 三部分组成 ecmaScript 基础语法 (es5) dom document object model 文档对象模型 (操作html文档内容) bom bo ...
- [JS复习] JS 基础知识
项目结尾,空闲时间,又把<JS 基础知识> 这本书过了一遍,温故知新后,很多知其然不知其所以然的内容 豁然开朗. [1. 用于范围的标签] display :inline or bloc ...
- JS高级. 01 复习JS基础
1. JavaScript 包含: ____, ____, 和 ____. 2. JavaScript 的基本类型有 ____, ____, 和 ____. 3. JavaScript 的复合类型有 ...
- JS基础语法---阶段复习+作业练习+接下来知识点heads up
调试:调试代码---高级程序员都是从调试开始的 调试: 写代码---打开浏览器--F12(开发人员工具)--->Sources---双击文件,在某一行代码前面点击一下(出现的东西就是断点) 一元 ...
- JavaScript学习笔记 - 进阶篇(1)- JS基础语法
前言 JavaScript能做什么? 1.增强页面动态效果(如:下拉菜单.图片轮播.信息滚动等) 2.实现页面与用户之间的实时.动态交互(如:用户注册.登陆验证等) JS进阶篇学习什么? 在JavaS ...
随机推荐
- ITIL4 服务价值系统(SVS):一场服务管理的革新之旅
在这个数字化时代,每一家企业都在追求高效的服务管理和卓越的客户体验.今天,我们就来聊一聊ITIL4中的服务价值系统(Service Value System, SVS)--一个让服务管理变得更加直观和 ...
- 虚拟服务器VirtualBox不要太好用
在工作和学习前端的路上遇到过太多的坑,就是跳进坑里了,还要勇敢的爬起来. 本章真的想真心实意的推荐一下,超好用的虚拟服务器.你还在纠结window环境和Mac本的区别吗?是不是上班用的window电脑 ...
- leaflet利用hotline实现河流差值渲染热力图
实现效果(这里做了1条主河道和5个支流): 核心代码使用了Leaflet.hotline插件,github下载地址链接 详情见我之前整理的一篇文章介绍河流热力图 核心代码逻辑: // 处理河流数据以及 ...
- 网络安全—SSL安全访问应用
文章目录 网络拓扑 部署CA服务器颁发证书 开启Web服务 安装IIS服务 修改Web默认网页 申请Web证书 前提准备 申请文件生成 申请web证书 开始安装web证书 客户机访问web默认网站 使 ...
- pageoffice 6 实现数据区域填充(插入文本、图片、word、excel等)
在实际的Word文档开发中,经常需要自动填充数据到Word模板中,以生成动态的Word文档. 例如: 1.我们可以根据数据库表中已保存的个人信息,设计好一个简历模板docx文件,然后通过代码将这些个人 ...
- 在友晶DE10-Lite开发板实现8051单片机
在友晶DE10-Lite开发板实现8051单片机 1. 移植过程 利用FPGA片内资源构建51系统.软核来自https://www.oreganosystems.at/.还需要添加rom.ram和ra ...
- 我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
在一些咨询或活动现场,我们经常听到有朋友说:我们是小公司,IPD(集成产品开发)太厚重了,不适合我们.但--到底哪里不合适? 提及IPD,成功的案例多以大公司为主:20世纪90年代,IBM在激烈的市场 ...
- 基于Python的性能优化
一.多线程 在CPU不密集.IO密集的任务下,多线程可以一定程度的提升运行效率. import threading import time import requests def fetch_url( ...
- 记录一次 对应用程序日志排查,老是刷出有本地ip登录Sqlserver数据库失败的日志
在我电脑-计算机管理-事件查看器-windows日志-应用程序里 1秒中就刷很多条 用户sa登录某个数据库失败,客户端ip:192....; 我查看ip发现是本机的ip地址.也就是说有本地的应用程序在 ...
- React 的 KeepAlive 探索
什么是 KeepAlive? 用过 Vue 的童鞋都知道 Vue 官方自带了 Keep-Alive 组件,它能够使组件在切换时仍能保留原有的状态信息,并且有专门的生命周期方便去做额外的处理.该组件在很 ...