布兰登.艾奇在1995年利用10天完成JavaScript设计。最开始在网景工作,网景最初命名为LiveScript,后来在与Sun合作之后将其改名为JavaScript,因为sun公司的主打是java,所以为了蹭javascript的热度,但内部实现原理与Java不同。
JavaScript是世界上最流行的语言之一,是一种运行在客户端(自己的电脑)的脚本语言(Script是脚本的意思)
脚本语言:不需要编译,运行过程中有js解释器(js引擎)逐行来进行解释并执行
现在也可以基于Node.js技术进行服务器端编程。
浏览器分成两部分 渲染引擎和JS引擎
渲染引擎:用来解析HTML与CSS,俗称内核,比如chrome浏览器的blink,老版本的webkit
JS引擎:也称为JS解释器。用来读取网页中的JavaScript代码,对其处理后运行,比如chrome浏览器的V8
浏览器本身并不会执行JS代码,而是通过内置JS引擎(解释器)来执行JS代码。JS引擎执行代码时逐行解释每一句源码转化为二进制机器语言,然后由计算机去执行。
ECMAScript DOM BOM
ECMAScript是由ECMA国际(原欧洲计算机制造商协会)进行标准化的一门编程语言,这种语言在万维网上应用广泛。
Jscript与JavaScript的本质是一样的。现在最流行的是JavaScript。ECMAScript规定了JS的编程语法和基础核心知识,是所有浏览器厂商共同遵循的一套JS语法工业标准。
DOM——文档对象模型,是由W3C组织推荐的处理看扩展标记语言的标准编程接口。通过DOM提供的接口可以对页面上的各种元素进行操作
BOM——浏览器对象模型
alert(msg) 浏览器弹出警示框
console.log(msg) 浏览器控制台打印输出信息
prompt(info) 浏览器弹出输入框,用户可以输入
变量是用来存储值的所在处,他们有名字和数据类型。变量的数据类型决定 如何将代表这些值的位村存储到计算机的内存中。JS是一种**弱类型或者说动态语言**。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。
js是动态语言 变量的数据类型是可以变化的。
// 变量不要写在字符串里面
var age = 16;
console.log('今年' + age + '岁');
var flag = true;
var flag1 = false;
console.log(flag + 1);
console.log(flag1 + 1);
var str;
console.log(str);
var variable = undefined;
console.log(variable + 'pink');
任何数据类型和字符串相连最后结果都是字符串
undefined 和 数字想加最后的结果是NaN、null和数字想加最后的结果是数字。因为undefined是未定义的,null是空值。
var num = 10;
// 1.变量.toString
var str = num.toString();
console.log(typeof str);
// 2.String(变量)
console.log(String(num));
// 3.利用加号品拼接字符串的方法,隐式转换
console.log(num + '');
var age = prompt('请输入');
// 1.parseInt(变量); 可以把字符型的转换为数字型 得到的是整数
console.log(parseInt(age));
console.log(parseInt('120px')); //120会去掉单位
// 2.parseFloat(变量)
console.log(parseFloat('3.14'));
console.log(parseFloat('rem2.12px')); //NaN 从左开始往右检查,当碰到 r 时发现不是数字,直接输出NaN.
var age = prompt('请输入你的出生年份');
console.log(age);
var now = 2020 - parseInt(age);
// alert(now);
var now1 = 2020 - age;
// alert(now1);
var now2 = 2020 - Number(age);
alert(now2);
案例2 两个数字相加
var num = prompt('第一个数字');
var num2 = prompt('第二个数字');
var total = parseFloat(num) + parseFloat(num2);
var total2 = Number(num) + Number(num2);
alert('您输入的数字是' + total2);
var num = 0;
console.log(123 || num++); //123
console.log(num); //0
var um = 10;
// um = um + 2;
um += 2; /////////////////////////////注意: += 中间没有空格但是两边有空格
console.log(um);
var a = prompt('请输入年份:');
if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0) {
alert(a + '是闰年');
} else {
alert(a + '是平年');
}
多分支语句
if () {
} else if () {
} else if () {
} else {
}
成绩分级案例
var grade = prompt('请输入你的成绩');
if (grade >= 90) {
alert('您的评分为A');
} else if (grade >= 80) {
alert('您的评分B');
} else if (grade >= 70) {
alert('您的评分为C');
} else if (grade >= 60) {
alert('您的评分为D');
} else {
alert('您的评分为E');
}
三元表达式 可以代替if else的式子
条件表达式 ? 表达式1 : 表达式2
如果条件表达式结果为真 则返回表达式1的值 如果表达式结果为假 则返回表达式2的值
var num = 10;
var result = num > 5 ? '是的' : '不是的'; //可以代替下面的代码
console.log(result); //可以代替下面的代码
if (num > 5) {
result = '是的';
} else {
result = '不是的';
}
4. switch语句,也是多分支语句 执行效率更高
如果值是固定的则适合用switch,如果是范围的,用if更好
利用表达式的值 和 case 后面的选项值相匹配 如果匹配上则执行该语句,如果都没有匹配上则执行default语句
语法结构
switch (表达式) {
case value1 :
执行语句1;
break;
case value2:
执行语句2;
break;
…
default:
执行最后一句;
}
###switch 语句与if else if语句的区别###
var num = prompt('请输入分数');
// 转换成数字
转换成整数、num/10 会有余数所以不正确
switch (parseInt(num / 10)) {
case 10:
alert('A');
break;
case 9:
alert('A');
break;
case 8:
alert('B');
break;
default:
alert('over');
prompt 输出的是字符串类型
乘法口诀 var str = ''; for (var i = 1; i <= 9; i++) { for (var x = 1; x <= i; x++) { str = str + (x + '*' + i + '=' + i * x) + ' '; // console.log(x + '*' + i + '=' + i * x); } console.log(str + '\n'); var str = ''; }
` var str = ‘’;
for (var i = 10; i >= 0; i–) {
for (var x = 0; x <= i; x++) {
str = str + ‘☆’;
}
console.log(str + ‘\n’);
var str = ‘’;
}`
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020022012500670.png)
**倒三角 方法二**
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200220130753334.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200220132203673.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1ptb25nbw==,size_16,color_FFFFFF,t_70)
var i = 1; var num = 0; while (i <= 100) { num += i; i++; } console.log(num);
至少执行一次循环体
do {
循环体
} while (条件表达式)
执行思路跟while不同的地方在于 do while 先执行一次循环体 再判断条件 如果条件表达式结果为真则继续执行循环体。
操作符两侧各保留一个空格
单行注释: //
多行注释:/**/
括号左右两侧加空格
后一个大括号与配对的第一个字母对齐
var money = 100;
var j = prompt('请输入:\n 1.存钱 \n 2.取钱 \n 3.显示余额 \n 4. 退出');
for (var i = j; i = j; i++) {
if (i == 1) {
var n = prompt('请输入您要存的钱数:');
money = money + parseFloat(n);
alert('你目前的余额为' + money);
var j = prompt('请输入:\n 1.存钱 \n 2.取钱 \n 3.显示余额 \n 4. 退出');
} else if (i == 2) {
var m = prompt('请输入您要取的金额:');
money = money - parseFloat(m);
alert('您目前剩余金额为' + money);
var j = prompt('请输入:\n 1.存钱 \n 2.取钱 \n 3.显示余额 \n 4. 退出');
} else if (i == 3) {
alert('您的余额为' + money);
var j = prompt('请输入:\n 1.存钱 \n 2.取钱 \n 3.显示余额 \n 4. 退出');
} else if (i == 4) {
alert('正在退出.....');
break;
}
}