减号,乘号,除号都有隐式转换的功能
只有在其 所在的 以及 之后的式子可以转换,
简单理解为出现这些符号之后的所有都可以转换
alert(‘1’+23-true)//122
alert(‘1’-23+false)//-22
alert((‘1’-23)+false)//-22
alert((‘1’+23)-false)//123 括号里的已经形成’1’23,无法转换了
alert(‘1’+23-false)//123
请写出获得15-23(包含15和23)之间的随机 整数 的代码。(4分)
Math.floor(math.random()(23-15+1)) + 15
Math.ceil(math.random()(23-15)) + 15
注意向上、向下取整问题,里面涉及的数值不手动计算,因为这样代码可读性更高
var str=’1235746’
console.log(str.indexOf(“@”));
// indexOf是返回某个字符在字符串出现的位置的,如果不存在,返回-1,如果存在,返回第一次出现的位置
//同理;indexof()可以获取数组中某个元素的索引,如果不存在返回-1
例如取消勾选中的一段代码
var x =arr.indexOf(this.parentNode.parentNode);
arr.splice(x,1)
isNaN(x) (就是判断x是不是NaN,是就返回true)
如果 x 是 特殊的非数字值 NaN(或者能被转换为这样的值),返回的值就是 true。如果 x 是其他值,则返回 false (就是判断x是不是NaN,是就返回true)
NaN:
NaN(Not a Number,非数)是数值数据类型的一类值,表示未定义或不可表示的值。常在浮点数运算中使用。
break、continue和 return的区别?
在循环中使用 break 和 continue
break终止循环的执行;
continue中断本次循环继续下次循环。
在函数中使用 return,可以返回值并终止函数的执行。
JavaScript 数据类型
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
在写代码的时候,遇到一些繁琐的名称,可能会出现逻辑问题而不自知,比如e.target.XXX,此时最好创建一个新的变量名来代替e.target.XXX,纠错时也会容易很多
注意DOM结构
当鼠标拖拽事件时,分为onmousedown,onmousemove,onmouseup三个事件,结构无错,不报错,但运行不对是因为默认事件的发生,鼠标抬起的动作无法执行
e.preventDefault()//默认事件不会发生
<!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><style>.big_pic {width: 360px;margin: 0 auto;position: relative;}#small_pic {width: 360px;height: 50px;border: 1px solid black;border-radius: 26px;margin: 0 auto;background-color: skyblue;position: relative;}#arrow {border-radius: 50%;/* border: 1px solid red; */overflow: hidden;width: 50px;height: 50px;top: 0;position: absolute;}#arrow.img {width: 50px;height: 50px;}.suspension {position: absolute;left: 0;top: 30px;}</style></head><body><div class="big_pic"><img src="./images/a.png" alt=""><img src="./images/a1.png" alt="" class="suspension"></div><div id="small_pic"><div id="arrow"><img src="./images/arrow.png" alt=""></div></div><script>var suspension = document.querySelector('.suspension')var arrow = document.querySelector('#arrow')var mouse_start_xvar mouse_end_xarrow.onmousedown = function (e) {var d = e.clientX - this.offsetLeftconsole.log(d);e.preventDefault()//默认事件不会发生arrow.onmousemove = function (e) {mouse_end_x = e.clientX - dconsole.log('-----------');console.log(mouse_end_x);if (0 <= mouse_end_x && mouse_end_x <= 300) {arrow.style.left = mouse_end_x + 'px'suspension.style.left = mouse_end_x + 'px'}}}arrow.onmouseup = function () {console.log('****');if (100 <= mouse_end_x && mouse_end_x <= 120) {alert('验证成功')arrow.style.left = ''suspension.style.left = ''}arrow.onmousemove = null;arrow.onmouseup = null}</script></body></html>
冒泡和默认事件
1.event.stopPropagation()方法
这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时候,如果点击一个链接,这个链接仍然会被打开,
2.event.preventDefault()方法
这是阻止默认事件的方法,调用此方法是,连接不会被打开,但是会发生冒泡,冒泡会传递到上一层的父元素;
3.return false ;
这个方法比较暴力,他会同事阻止事件冒泡也会阻止默认事件;写上此代码,连接不会被打开,事件也不会传递到上一层的父元素;可以理解为return false就等于同时调用了event.stopPropagation()和event.preventDefault()
原文博客链接:https://blog.csdn.net/wxl1555/article/details/53128966
JSON.parse() 将JSON字符串转换为对象、数组
JSON.stringify() 将对象、数组转换为JSON字符串
JSON是一种数据交换格式,拥有固定格式字符串
get请求直接被嵌入在路径中,URL是完整的请求路径,包括?后的部分
post请求内容全部在请求体中
find()方法返回通过条件的 数组的 第一个值,没有符合元素就返回undefined
cookie是在服务端生成的,传递到客户端,在客户端存储的一种技术,用来解决http协议的无状态问题
ES5中的普通函数内部this并不是指向window,而是谁调用就指向谁
若父元素要成为子元素的绝对定位参照物,只要父元素中有position属性即可
jQuery中的方法和原生JS的方法不通用
onchange监听事件是在当表单元素发生改变且失去焦点时触发
jQuery是一个对原生JS封装的库
事件委托的原理:事件委托就是基于JS的事件流产生的,事件委托是利用事件冒泡,将事件加在父元素或者祖先元素上,触发该事件
优点:减少事件注册,节省内存空间,执行效率提高
新增元素节点时,不需要给新增节点绑定事件
