运算符+事件三要素
创始人
2024-03-06 03:41:12
0

运算符+事件三要素

运算符与表达式

运算符:也被称为操作符,用于执行程序代码运算,会针对一个以上操作数来进行运算

表达式:是由一个或多个操作数通过运算符连接起来的式子,每个表达式最终都会有一个结果,返回给开发者

运算符的分类

  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 三目运算符

算术运算符

加+ 隐士转换: “string”+任意类型数据 = “string”;

规则

1、如果两边都是数字,则就是普通的数学计算

2、如果有一边是字符串,则另一边也转成字符串,变成字符串的拼接

3、如果没有字符串,则调用 Number 方法,转成数字,再进行相加

4、如果有一边是对象,则对象调用 toString 得到字符串表示,再进行计算

var a = 5;
var b = '20';
console.log(a + b); // '520'console.log(true + null); // 1
console.log(1 + {}); // '1[object Object]'console.log(null + undefined); // NaN
console.log(0 + false); // 0
console.log('' + false); // 'false'
console.log('' + undefined); // 'undefined'var a = 5;
var b = 20;
// console.log('5+20的和是25');
console.log(a + '+' + b + '的和是' + (a + b));

- * / 隐士转换: number -*/ 任意类型数据 = number;

操作符的两边都调用Number转成数字再计算

console.log(5 - '20'); // -15
console.log(false - null); // 0
console.log('小王' - 5); // NaN

% 取模 取余

console.log(10 % 3); // 1
console.log(10 % '12'); // 10
console.log(10 % null); // NaN// 一个递增的变量取模n,返回的是0--n-1之间的数
console.log(0 % 3); // 0
console.log(1 % 3); // 1
console.log(2 % 3); // 2
console.log(3 % 3); // 0
console.log(4 % 3); // 1
console.log(5 % 3); // 2
console.log(6 % 3); // 0

递增++ 递减–

var n = 3;
n++; // n = n + 1
++n; // n = n + 1
console.log(n);

加加在前(前置递增),先自增,然后参与表达式的计算(再返回)。

加加在后(后置递增),先参与表达式的计算,再自增(再返回)。

var num1 = 2;
var num2 = 20;
var num3 = num1-- + num2;
var num4 = num1 + num2;
console.log(num3, num4);var a = 10;
var b = ++a + a++;
console.log(a, b); // 12 22

赋值运算符

= += -= *= /= %=

// =    赋值
// += -= *= /= %=   操作符的两边先操作,结果赋给左边var a = 5; // 将5赋给a
a += 2; // a = a+2;
a *= 3;
console.log(a); // 21

3、比较运算符

比较运算符返回的是布尔值

> >= < <=

规则:

1、如果操作数的两边都是字符串,则是字符串的比较,比较的是字符串的编码,字符串是一位一位的比较

2、操作数的两边有一边不是字符串,则都转成数字,再进行比较

console.log(5 > 3); // true
console.log(5 >= 5); // trueconsole.log(12 > 2); // true
console.log(12 > '2'); // true
console.log('12' > '2'); // false
console.log(null >= ''); // true

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AaXQYlPh-1632923100626)(C:\Users\Administrator\Desktop\课堂笔记\第二阶段\笔记\image\ASCII.png)]

== !=

两个等号的相等,为了比较,会隐式类型转换,都转成数字进行比较

null和undefined不转换,只有null和undefined它们相比较时为真

console.log(10 == '10'); // true
console.log(false == 0); // true
console.log('' == 0); // true
console.log(null == 0); // false
console.log(null == undefined); // true
console.log(null != undefined); // false

=== !== (工作中推荐)

三个等号的比较(全等),必须类型和值都相等,不会进行转换

console.log(10 === '10'); // false
console.log(null === undefined); // false
console.log(null !== undefined); // true

4、逻辑运算符

1、&& 与 并且 找假反假
//找假反假
console.log(12 > 10 && 12 >= 12);
12>10为真,继续执行,12>=12为真,继续,后无&&,直接返回最后的真。console.log(12 > 10 && 12 > 12);
12>10为真,继续执行,12>12为假,直接返回假。console.log(12 < 10 && 12 == 12);
12<10为假,直接返回假,后面不运算不执行。
// &&   与(并且)
// 操作符的两边都为真,结果为真// 短路操作:左边为假,则不用跑右边
// 如果左边为假,则不用跑到右边;直接看左边,如果左边是表达式,则表达式求值,如果左边是值,则返回这个值
// 如果左边为真,则跑到右边;直接看右边,如果右边是表达式,则表达式求值,如果右边是值,则返回这个值console.log(12 > 10 && 12 >= 12); // true
console.log(12 < 10 && 12 >= 12); // falseconsole.log(12 > 10 && 3); // 3
console.log(false && 3); // false
逻辑&&应用
function fn (callback){callback && callback();
}callback如有实参,则为真,继续执行后面语句callback()。
callback如无实参,则为假,不执行(中断)后面语句callback()。
2、|| 或 或者 找真反真
console.log(12 < 10 || 12 > 12);
12<10为假,继续执行,12>12为假,继续,后无||,直接返回最后的假。console.log(1 || 12 >= 12);
1为真,直接返回1,后面不执行不运算。console.log(12 > 10 || 12 > 12);
12>10为真,直接返回真,后面不执行不运算。
// ||   或(或者)
// 操作符的两边只要有一边为真,结果为真
// 短路操作:左边为真,则不用跑右边// 如果左边为真,则不用跑到右边;直接看左边,如果左边是表达式,则表达式求值,如果左边是值,则返回这个值
// 如果左边为假,则跑到右边;直接看右边,如果右边是表达式,则表达式求值,如果右边是值,则返回这个值console.log(12 > 10 || 12 <= 12); // true
console.log(12 < 10 || 12 <= 12); // true
console.log(12 < 10 || 12 <= 11); // falseconsole.log(12 > 10 || 3); // true
console.log(12 < 10 || 3); // 3
console.log('' || 3); // 3
console.log(5 || 3); // 5
3、! 非 取反
// !    非(取反)
var a = 12;
console.log(!a); // false
console.log(!!!!!!!!!a); // false

综合案例

var a = 1,b = 1;
var n = --a && --b;
console.log(n, a, b);
var n = ++a && ++b;
console.log(n, a, b);var a = 1,b = 1;
var n = --a || --b;
console.log(n, a, b);
var n = ++a || ++b;
console.log(n, a, b);

5、三目运算符

三目(三元)

格式:表达式 ? 表达式为真执行代码 : 表达式为假执行的代码;

var age = 7;
// age >= 7 ? alert('上小学') : alert('上大班');// 推荐使用方法
var v = age >= 7 ? '上小学' : '上大班';
console.log(v);

6、优先级

https://github.com/xhlwill/blog/issues/16

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wal8M3kJ-1632923100628)(C:\Users\Administrator\Desktop\web js笔记及思维图\js二阶段\笔记\image\截图20210906092507.png)]

7、隐式类型转换

// 加 +
console.log(10 + 100); // 110
console.log(10 + 'string'); // '10string'
console.log(19 + 10 + 'age' + 18 + 10)    //'29age1810'
console.log(10 + '100'); // '10100'
console.log(10 + true); // 11
console.log(true + false); // 1
console.log('10' + true); // '10true'
console.log('' + 100); // '100'
console.log(10 + null); // 10
console.log(10 + undefined); // NaN 
// 减 -
console.log(100 - 10); // 90
console.log(100 - 't'); // NaN
console.log(100 - ''); // 100
console.log(100 - true); // 99
console.log(100 - '80'); // 20
console.log(100 - null); // 100
console.log(100 - undefined); // NaN
// 乘 *
console.log(100 * 'a'); // NaN
console.log(100 * ''); // 0
console.log(100 * '100');// 10000
console.log(100 * null); // 0
console.log(100 * undefined);// NaN
// 除 /
console.log(100 / 'a'); // NaN
console.log(100 / ''); // 无穷大
console.log(100 / '70'); // 10/7
console.log(100 / null); // 无穷大
console.log(100 / undefined); // NaN
// 取余 %
console.log(100 % 'a'); // NaN
console.log(100 % ''); // NaN
console.log(100 % '70'); // 30
console.log(100 % null); // NaN
console.log(100 % undefined); // NaN
// ++
var n = '10';
n++; // 1、n转为数字10   2、n++  
console.log(n); // 11
// 取反
console.log(!true); // false
console.log(!10); // false
console.log(!'web'); // false

7、强制类型转换和隐式类型转换

1、强制类型转换

Number(参数)   
parseInt(参数)   
parseFloat(参数)   
String(参数)   
参数.toString()   
Boolean(参数)

2、隐式类型转换

+ - * / % ++ -- 都具有隐式类型转换的作用

javaScript交互基础

找元素

通过ID

通过ID获取元素: 
document.getElementById('ID');
返回这个元素的引用,返回的是一个元素document文档 seletor 选择器  get获取    Element元素    ById通过ID  query查询 
// 元素.事件 = function () { 要做的事 }var box = document.getElementById('box');
// console.log(box);
box.onclick = function () {alert('姐妹,上课了');
}

获取特殊标签

  • document.title = ‘醒醒别睡着了’; // title
  • document.body; // body
  • document.documentElement; // html

通过标签名

// 2、通过标签名获取元素,返回的是一组元素(对象、类数组、伪数组),它有长度,可以通过下标获取某一个
// document.getElementsByTagName('标签名');  找整个页面下的元素
// 父级.getElementsByTagName('标签名');      找这个父级下的元素var lis = document.getElementsByTagName('li'); // 找整个页面的
var lis = list1.getElementsByTagName('li'); // 找list1下面的
console.log(lis);
console.log(lis.length); // 6
console.log(lis[2]); // 通过下标获取某一个// 只能给某一个元素添加事件,而不能给这个虚拟的组添加事件
lis[1].onclick = function () {console.log('点我了');
}

通过class名

IE8及以下不支持

// 3、通过class名获取元素,返回的是一组元素(对象、类数组、伪数组),它有长度,可以通过下标获取某一个
// document.getElementsByClassName('class名')
// 父级.getElementsByClassName('class名')// var abc = document.getElementsByClassName('abc');
var abc = list1.getElementsByClassName('abc');
console.log(abc);abc[0].onclick = function () {console.log('睡觉的醒醒');
}

通过css样式

var a = document.querySeletor('ul li');
//返回第一个元素,里面为css样式
var as = document.querySeletorAll('li');
//返回一组元素(伪数组)

交互三要素

  • 1、找到谁
  • 2、做什么操作
  • 3、干什么事

元素.事件 = function () { 要做的事 }

window.onload

当页面加载完成之后(页面包含的html\css\js\图片等等),执行这个函数

window.onload = 函数

window.onload = function () {var box = document.getElementById('box'); // 找元素console.log(box); // 检查找得对不对box.onclick = function () {alert('哥们,点了我')}
}

鼠标事件

  • onclick :点击事件
  • ondblclick:双击事件
  • onmouseover : 鼠标移入元素
  • onmouseout : 鼠标离开元素
  • onmouseenter :鼠标移入元素
  • onmouseleave :鼠标离开元素
  • onmousemove: 鼠标在元素中移动
  • onmousedown: 鼠标按下
  • onmouseup: 鼠标抬起
  • oncontextmenu :鼠标右键菜单事件
window.onload = function () {var box = document.getElementById('box');// 点击box.onclick = function () {console.log('点我了');}// 双击box.ondblclick = function () {console.log('双击了');}// 鼠标按下box.onmousedown = function () {console.log('按下');}// 鼠标抬起box.onmouseup = function () {console.log('抬起');}// 鼠标在元素上滑动(抚摸),会不断的执行box.onmousemove = function () {console.log('移动了');}// 移入box.onmouseover = function () {console.log('进来了');}// 移出box.onmouseout = function () {console.log('离开了');}// 另一对移入移出// 移入box.onmouseenter = function () {console.log('进来了222');}// 移出box.onmouseleave = function () {console.log('离开了222');}// 右键(环境菜单)box.oncontextmenu = function () {console.log('右键执行了');}
}

javaScript操作标签

元素内容操作

表单元素
  • 获取:元素.value;
  • 设置:元素.value = 值;

注意:设置会覆盖原来的内容



// 获取:元素.vlaue
// 设置:元素.vlaue = 值;var input = document.getElementsByTagName('input')[0];
var btn = document.getElementsByTagName('button');// console.log(input, btn);// 1、获取
btn[0].onclick = function () {console.log(input.value);
}// 2、设置
btn[1].onclick = function () {input.value = '写代码';
}
双标签元素

识别标签

  • 获取:元素.innerHTML
  • 设置:元素.innerHTML = 值

不识别标签

  • 获取:元素.innerText
  • 设置:元素.innerText = 值
你是隔壁老王
// innerHTML: 识别标签
// 获取:元素.innerHTML
// 设置:元素.innerHTML = 值// innerText: 不识别标签
// 获取:元素.innerText
// 设置:元素.innerText = 值var div = document.getElementsByTagName('div')[0];
var btn = document.getElementsByTagName('button');// 获取
btn[0].onclick = function () {console.log(div.innerHTML); // 你是隔壁老王console.log(div.innerText); // 你是隔壁老王
}// 设置
btn[1].onclick = function () {// div.innerHTML = '你是平头妹';div.innerText = '你是平头妹';
}
操作元素属性

属性:写在起始标签里的名值对

  • 获取:元素.属性名
  • 设置:元素.属性名 = 值

class要改成className

  • 获取:元素.className
  • 设置:元素.className = 值
平头哥
var box = document.getElementById('box');// 属性操作
console.log(box.title); // 获取
box.title = '平头哥找平头妹'; // 设置// -------------------------------
// class要用className
console.log(box.className); // 获取
box.className = 'ddd'; // 设置// 等号右边的先算,算完赋给左边
box.className = box.className + ' ddd';
box.className += ' ddd'; // 简写

操作元素样式

  • 设置:元素.style.样式名 = 值; 设置的是行间的样式

  • 获取:元素.style.样式名; 获取的行间的样式(不实用)

  • 设置:元素.style.cssText = ‘width: 200px; height: 200px;’

谁敢点我
// 需求:点击box,让它的宽高各为200,背景为红色,字号为30,颜色为白色var box = document.getElementById('box');box.onclick = function () {// box.style.width = '200px';// box.style.height = '200px';// box.style.backgroundColor = 'red';// box.style.fontSize = '30px';// box.style.color = 'white';// 一般不推荐,因为它会覆盖原来行间的样式box.style.cssText = 'width: 300px;height: 300px;background-color: pink; font-size: 30px; color: green;';
}

.className + ’ ddd’;
box.className += ’ ddd’; // 简写

#### 操作元素样式- 设置:元素.style.样式名 = 值;    设置的是行间的样式- 获取:元素.style.样式名;       获取的行间的样式(不实用)- 设置:元素.style.cssText = 'width: 200px; height: 200px;'```html
谁敢点我
// 需求:点击box,让它的宽高各为200,背景为红色,字号为30,颜色为白色var box = document.getElementById('box');box.onclick = function () {// box.style.width = '200px';// box.style.height = '200px';// box.style.backgroundColor = 'red';// box.style.fontSize = '30px';// box.style.color = 'white';// 一般不推荐,因为它会覆盖原来行间的样式box.style.cssText = 'width: 300px;height: 300px;background-color: pink; font-size: 30px; color: green;';
}

相关内容

热门资讯

半岛时评|对法律条文不可联想式... 明年起给好友发不雅照片要被拘留?新修订的《中华人民共和国治安管理处罚法》明年1月1日起施行,近日,有...
全国住房城乡建设工作会议提出:... 全国住房城乡建设工作会议提出:进一步发挥房地产项目“白名单”制度作用 王舒嫄 中国证券报 2025...
新闻8点见丨江苏全面调查南博文... 【时政】 《行政执法监督条例》自2026年2月1日起施行 12月23日公布的《行政执法监督条例》自2...
国家安全部披露:某单位赶制年终... 岁末年终,总结、考核、检查等工作密集开展。各类材料的整理、数据的汇总与后续计划的制定,往往涉及多方面...
上证观察家 | “多速并行”:... 主要发达经济体的货币政策已从“同向宽松”转向“多速并行”:美联储在连续降息后趋于谨慎,英国央行在通胀...
委内瑞拉议会通过法律 应对美海... 新华社加拉加斯12月23日电(记者缪培源 田睿)委内瑞拉全国代表大会23日一致通过《保护航行和贸易自...
银河证券:券商行情稳中有进,政... 银河证券指出,国家“稳增长、稳股市”、“提振资本市场”的政策目标将持续定调板块未来走向,流动性适度宽...
三部门开展“法援志愿行”活动 本报北京12月23日电 (记者张璁)司法部、教育部、共青团中央近日印发通知,在全国组织开展并持续推进...
榆林市第二期工信领域争资争项暨... 阳光讯(记者 张壮壮)为进一步助力榆林市工信系统及重点企业精准把握惠企政策导向,帮助企业争取更多项目...
个人征信修复政策出台 警惕“收... 山西晚报·山河+讯(记者 辛戈)个人信用可获官方“免申即享”式修复,但“收费洗白”的新骗局也随之冒头...