练习:
instanceof表示左边的数据是由右边的数据创建出来的
undefined值的类型就是undefined
undefined的值和null的值虽然相等,但是类型不同,null的类型是object。值相等是因为js的自动转换。
NaN和任何数据比较,永远返回false,今后只要有可能判断NaN时就用isNaN。NaN和任何东西计算,永远返回NaN
var str="hello";
str>10?str>10000?值永远返回false。
在关系运算中:字符串比数字,字符串转为数字。字符串如果转不成数字,就会变成NaN,NaN和任何数据比较都会返回false,所以在上述比较中,str不能转为数字,值返回false
注意:在逻辑运算中,不要急于将第一个条件之后的++/--提取出来
使用变量出错的情况只有一个:没声明的变量,只要使用就会出错。
var name="张三";
例1:
console.log(Name);    //错误!
该例子中,Name是未声明的,所以会出错
例2:
var name;
console.log(name);   //声明但是没有赋值,返回结果是undefined;
ReferenceError找不到对象,未声明错误
新课:
函数:也就是方法。是封装执行一项专门任务的步骤的代码序列。任务调用都是通过任务名调用的。方法的目的是重用。
何时需要定义方法?只要发现一段代码重复使用,就封装为方法。
方法声明语法:
function 方法名(参数列表) {
方法体:步骤清单;
return 返回值;
}
调用:
方法名(参数值列表);
方法声明后不调用的话是不能使用的。
例:
function buy(what/*菜名*/){
console.log("取饭盒");
console.log("走到食堂");
console.log("找窗口打饭");
what="香喷喷的"+what;
console.log("回宿舍");
return what;
}
var jy1=buy("饺子");
console.log(jy1);
var jy2=buy("盖饭");
console.log(jy2);
var jy3=buy("面条");
console.log(jy3);
参数:是方法内独有的变量。作用就是接受传入数据,并在方法内处理。参数的根本目的就是让参数变的灵活。参数的定义都是定义在方法名后面的圆括号()中。
如何声明方法参数?不用var。
参数何时使用?只有方法被调用时才自动创建。
返回值:方法执行完成后,由方法返回的一个数据。有的方法有返回值,有的方法没有返回值。
定义返回值:不用再声明变量,直接用return,后面跟一个值就行了。
return:两层含义
1.本意是退出方法。return后的操作不能执行。
2.退出同时,可返回数据。
可以在任何需要的地方,调用方法执行;带返回值的方法,使用时,等效于直接使用返回值。
例:
function add(a,b){
return a+b;
}
var a=parseInt(prompt("输入第一个加数"));
var b=parseInt(prompt("输入第二个加数"));
console.log(add(a,b));   //add(a,b)的返回值可直接使用
在上例中,后面的东西不能放在return后面,因为这样后面的步骤就无法执行了。
例:
function getmax(a,b,c){
var max=a>b?a:b;
max=max>c?max:c;
return max;
}
var a=parseInt(prompt("输入第一个加数"));
var b=parseInt(prompt("输入第二个加数"));
var c=parseInt(prompt("输入第三个加数"));
console.log("最大值:"+getmax(a,b,c));
为什么要定义返回值?因为调用方法的人需要明确的返回结果。return是给调用者用的。
作用域:指一个变量的可用范围。
var washer="洗衣机";
function fun(){
var yg="我的衣服";
console.log(yg);
console.log(washer);
}
fun();
console.log(yg);     //出错!
window对象:是整个网页的全局作用域对象
全局作用域:直接放在全局作用域中的变量,叫全局变量。凡是今后只要希望所有作用域共用的变量都要声明全局作用域。
局部(函数)作用域:声明在方法内部的变量或方法的参数变量都叫局部变量。
值传递:将一个变量的值赋值给另一个变量,其实是将原变量中的值,复制一份给新变量。
js中一切赋值都是值传递。
例:
var sum=0;
function add(){
sum+=3;
console.log(sum);
}
add();               //3
console.log(sum);    //3,只要见不到var,sum使用的值都是window里面的,且将window的sum直接操作赋值了
对未声明的变量赋值:js会自动在全局创建该变量(仅限于赋值操作)
例:
function add(){
sum=3;             //此处的sum是全局变量,但是不推荐这样使用
}
函数作用域在调用方法时创建,方法执行完立刻销毁!
var sum=0;
function add(sum){
sum+=3;
console.log(sum);   
}
add(sum);               //3
console.log(sum);    //0,这个里面函数本身定义了sum参数,执行结束后就会立刻销毁,不会对外面的sum值产生影响
例:
var card=10;
function buy(what,card){
card-=3;
console.log("余额"+card);
what="香喷喷的"+what;
return what;
}
var jy1=buy("饺子",card);
console.log(jy1);
console.log("余额"+card);
问题:
方法的参数和方法外定义了哪些变量没有任何关系,方法参数是依据方法的处理逻辑至少需要几个数据才可正常执行。
方法参数两个作用:
1.接收外部传入数据,在方法内处理
2.规定调用方法的人必须提供哪些参数
方法定义是独立存在的。
方法返回值:根据方法调用者的需要来定义。如果方法调用者需要明确返回一个结果,就定义返回值。否则,可以不定义返回值。
拥有返回指定的方法,可以当作一个值用!
何时必须用变量接住?方法的返回值,后续程序可能反复使用。
鄙视题:
var num=0;
function f1(num){
num=100;
console.log(num);
}
f1(num);               //100
cosole.log(num);    //0
自定义函数:
全局函数:ECMAScript定义了标准,由各浏览器厂商已经实现的函数。咱们直接调用。
isNaN(x),parseInt/Float(x)
isFinite():判断指定数字是否有限值
encodeURI:将url中的非法字符转为单字节符号 --编码
decodeURI:将encodeURI转后的字符串,转换回原文  --解码
在url语法中,是不允许出现多字节字符,所以在发送之前都会对整个url中非法字符进行编码,转为utf-8
encodeURI对非法字符编码转为单字节,但是不会修改原字符串。必须用变量接住编码返回值才能保存编码。
例:
var kword="张东";
kword=encodeURI(kword);
var url="http://www.baidu.com/s?wd=";
console.log(kword);
console.log(url+kword);
console.log("欢迎"+decodeURI(kword));
unicode编码:每个字符2字节
utf-8编码:字母、数字是单字节,但是汉字是3字节
url规定,在参数值中,如果再次出现保留字,就是非法。
url保留字:/ ? $ : 等等
encodeURIComponent可以解决上述问题,既能对多字节非法字符编码,又能对单字节非法字符编码。今后在进行编码时优先选用encodeURIComponent,解码就用decodeURIComponent(kword)。
encodeURIComponent何时使用?将数据通过url发送时,都要先编码再发送.
decodeURIComponent:对encodeURIComponent编码的字符串解码。收到编码后的字符串后,都要先解码,在处理。
var kword="http://tmooc.cn";
kword=encodeURIComponent(kword);
var url="http://www.baidu.com/s?wd=";
console.log(kword);
console.log(url+kword);
console.log("欢迎访问"+decodeURIComponent(kword));
eval()可以执行字符串格式代码
eval("alert('hello eval()')");
程序结构:3种:顺序结构、选择结构、循环结构
程序:IPO
需求:找名词-->程序中的数据
两类:输入数据:单价,数量,收款金额
输出数据:应收金额,找零
分析处理流程:
1.请用户输入:单价,数量,收款金额,保存在变量中
2.计算:
应收金额=单价*数量
找零=收款金额-应收金额
3.输出:应收金额和找零
var price=parseFloat(prompt("请输入单价"));
var count=parseFloat(prompt("请输入数量"));
var money=parseFloat(prompt("请输入收款金额"));
var total=price*count;
total=total>=500?total*0.8:total;
var change=money-total;
document.write("应收"+total.toFixed(2));
document.write("找零:"+change.toFixed(2));
document.write在顺序执行代码中是没有问题的,是在网页中直接写html代码,document.write("<h1>应收</h1>"+total.toFixed(2)+"<br/>");
分支结构:程序在运行过程中,可以根据不同的条件,执行不同的任务。
分支结构:
if结构:1件事,要么做,要么不做,就用if结构   
if...else...结构:2件事,二选一执行
例:
var price=parseFloat(prompt("请输入单价"));
var count=parseFloat(prompt("请输入数量"));
var money=parseFloat(prompt("请输入收款金额"));
var total=price*count;
if(total>=500){
total*=0.8
}
var change=money-total;
document.write("应收"+total.toFixed(2));
document.write("找零:"+change.toFixed(2));
三目运算只能赋值,做不了语句。
if语句下面如果只有一句话,可以省略大括号,但是不推荐使用,容易出错。
例:
var price=parseFloat(prompt("请输入单价"));
var count=parseFloat(prompt("请输入数量"));
var money=parseFloat(prompt("请输入收款金额"));
var total=price*count;
if(money>=total){
var change=money-total;
document.write("应收"+total.toFixed(2));
document.write("找零:"+change.toFixed(2));
}
else{
var change=total-money;
document.write("总额不足");
document.write("还差:"+change.toFixed(2));
}
凡是满足和不满足都执行的语句,都提到if结构之外。if语句不可能都不执行。
else if结构:多件事,多选一执行
语法:
if(条件1){
满足条件1执行的代码
}else if(条件2){
满足条件2执行的代码
}else if(条件n){
满足条件n执行的代码
}else{
以上条件都不满足时,默认执行的代码
}
else if结构中,如果前一个条件已经满足,则后续else if不再执行!
例:
var score=parseInt(prompt("请输入分数:"));
if(score>100||score<0){
alert("屌丝");
}else if(score>=90){
alert("A");
}else if(score>=80){
alert("B");
}
else if(score>=60){
alert("C");
}
else{
alert("D");
}
注:
if语句用于处理分支逻辑时:
1.if判定中默认必需一个boolean值;
2.若出现的值不是boolean类型,则会自动转换。下面值默认都会自动转换为false:
if(0){}
if(null){}
if(undefined){}
if(NaN){}
if(""){}
if(0.0){}
分支结构中的条件,可以不是逻辑表达式,也可以不是布尔值,如果不是,js会自动转换为boolean类型,即0(整数),null,undefined,NaN,"",0.0(浮点数)都转为false,其余的全都转为true。
克莱托指数:
var weight=parseFloat(prompt("请输入体重(kg)"));
var height=parseFloat(prompt("请输入身高(m)"));
var quetlet=weight/(height*height);
if (quetlet>25){
document.write("偏重");
}else if (quetlet<20){
document.write("偏瘦");
}else{
document.write("正常");
}

JavaScript基础知识(3)相关推荐

  1. JavaScript 基础知识 - BOM篇

    前言 本篇文章是JavaScript基础知识的BOM篇,如果前面的<JavaScript基础知识-DOM篇>看完了,现在就可以学习BOM了. 注意: 所有的案例都在这里链接: 提取密码密码 ...

  2. js java用var_Java基础———JavaScript基础知识

    原标题:Java基础---JavaScript基础知识 JavaScript基础知识(1) Javascript的历史,Javascript是什么? JavaScript 诞生于 1995 年. 它当 ...

  3. JavaScript 基础知识 - DOM篇(二)

    7. 节点操作 7.1 节点的属性 节点分类: 标签节点 文本节点 属性节点 注释节点 节点常用的属性: nodeType:节点的类型 nodeName:节点名称 nodeValue:节点值 常见的节 ...

  4. javaweb(02) JavaScript基础知识

    javaweb(02): JavaScript基础知识 JavaScript简介 为什么出现JavaScript Javascript是什么 JavaScript和Java的关系? 就像卡巴斯基和巴基 ...

  5. Javascript基础知识之四(常用数组方法)

    一.MDN链接 Array - JavaScript | MDNJavaScript的 Array 对象是用于构造数组的全局对象,数组是类似于列表的高阶对象.https://developer.moz ...

  6. JavaScript基础知识与脚本语言总结

    1 Aptana插件安装 1.Aptana插件安装 <1>Aptana是一个非常强大,开源,JavaScript-focused的AJAX开发IDE. <2>它的特点包括: J ...

  7. JavaScript 基础知识 - 入门篇(二)

    11. 函数 11.1 函数的基础知识 为什么会有函数? 在写代码的时候,有一些常用的代码需要书写很多次,如果直接复制粘贴的话,会造成大量的代码冗余: 函数可以封装一段重复的javascript代码, ...

  8. JavaScript 基础知识

    JavaScript 基础知识 文章目录 JavaScript 基础知识 @[toc] 一.JS的基本语法与结构 1.1 JavaScript 用法 1.2 JavaScript 输出 1.3 Jav ...

  9. JavaScript 基础知识查漏补缺

    JavaScript 基础知识查漏补缺(持续更新) 数据类型 var bool = '4.3' > '11' console.log(bool) // 结果为true,二者都为字符串,字符串之间 ...

  10. 网页游戏开发基础——JavaScript基础知识

    对于初学编程的朋友来说,这篇文章有点长,而且会有点难懂.但是请不要放弃,我尽量以通俗的语言解释相关的编程概念,这里只讲解编写一个游戏需要的相关编程概念(如需要会在后面的文章中随时补充相关概念),对其余 ...

最新文章

  1. 缺乏管理思想的管理软件是没有灵魂的
  2. 状态机 python_Python状态机设计
  3. 单击浏览器右上角的X弹出提示窗口
  4. 百度鹰眼Web服务API开发使用教程
  5. svn 合并问题 MERGE of '/svn/web': 200 OK (http://xx.xx.xx.xx)
  6. 反客为主 ,Linux 成为微软 Azure 上最流行的操作系统
  7. 由浅入深解释JS执行机制 EventLoop
  8. python 构建来源gis_Python语言在ArcGIS环境中的应用.pptx
  9. 机器学习笔记:训练集、验证集与测试集
  10. 地图比例尺与空间分辨率之间的关系_地图比例尺,分辨率,dpi之间的关系
  11. Unity 讯飞实时语音转写(一)—— 使用WebSocket连接讯飞语音服务器
  12. 单片机流水灯工作原理
  13. 英语听力训练常采用的方法
  14. QT教程—1.1Qt入门
  15. ubuntu20运行A-LOAM记录
  16. aspose给word添加水印
  17. 爬虫技术python爬到女性语音_python爬虫看看虎牙女主播中谁最“顶”步骤详解
  18. mysql存储过程出参和入参_数据库mysql存储中的入参出参理解
  19. English Learning - Day15 作业打卡 2022.12.21 周三
  20. 导出xls的奇技淫巧

热门文章

  1. nodejs 查看下载文件路径_QQ、迅雷、新浪等App下载文件保存路径以及隐藏文件提取...
  2. Jquery动态添加img标签
  3. [转帖]pfSense软路由系统的使用
  4. 五款几乎没人知道的小众软件,按需下载
  5. 团队作业1-组队与选题
  6. RadeonSoftware.exe CPU占用过高解决方案
  7. 动态代理/spring IOC/JAVA反射机制
  8. 测试管理工具Testlink的优缺点
  9. 旅游行业获客新方式:小程序+内容营销
  10. 微信域名检测拦截及其原理