JS基础-运算符-函数
1.运算符
1.赋值运算符和扩展运算符
1.赋值运算符 =
2.扩展运算符
+=,-=,*=,/=,%=,^=....
ex:
a=a+b;--> a+=b;
a=a+1;--> a++,a+=1,++a
实现两个数字的换位:
a^=b;
b^=a;
a^=b;
2.条件运算符
条件运算符又称三目运算符。
单目(一元)运算符,只需要一个操作数或表达式。
ex:++,--,!
双目(二元)运算符,需要两个操作或表达式
ex:+,-,*,/,%,>,<,>=,<=,==,===,!=,!==,&,|,^,&&,||
三目(三元)运算符,需要三个表达式或操作数。
语法:
条件表达式?表达式1:表达式2;
先判断条件表达式的值,如果条件为true,则执行表达式1,如果条件为false,则执行表达式2。
ex:
从弹出框中输入成绩,如果成绩大于60,则输出及格,否则输出不及格。
练习:
从弹出框中输入成绩:
如果成绩等于100,则输出"奖励1000元",
如果成绩>=90,则输出"奖励100元",
如果成绩>=70,则输出"奖励10元素",
否则,输出"请大家吃饭"。
2.函数
1.什么是函数
函数,function,也称为方法
函数-功能。
函数是一段预定义好,并可以被反复执行的代码块。
预定义:提前定义好,并非马上执行。
反复执行:允许被多次调用。
代码块:可以包含多条可执行的语句
使用过的函数:
parseInt();
parseFloat();
Number();
alert();
document.write();
2.定义和使用函数
1.普通函数的声明和使用
1.声明
function 函数名(){
//函数体-若干可执行的代码
}
2.调用函数
在任意javascript合法位置处通过
函数名(); 对函数进行调用。
3.要同时调用多个函数方式如下:
function test(){
calculate(); //调用函数1
print();//调用函数2
}
练习:
1.定义一个函数名称calaulate(计算)
在函数体内,定义两个变量,num1, num2并赋值为数字,计算两个数字之和,并打印在控制台。
2.在网页中添加一个按钮,单击按钮时调用函数。
2.带参函数的声明和使用
1.声明
function 函数名(参数列表){
//函数体-js语句
}
参数列表:可以声明1个或多个参数,多个参数间用逗号分隔。
声明函数时,声明的参数称为“形参”。
2.调用
函数名(参数值列表);
注意:尽量按照声明函数的格式进行调用
调用时,传递的参数值称为“实参”。
练习:
定义带参函数,函数体内计算两个参数的乘积,并打印输出。单击按钮时调用函数。
3.带返回值函数的声明和使用
1.声明
function 函数名(){
//函数体
return 值;
}
2.调用
允许使用一个变量接收函数的返回值
var result=函数名();
练习:
定义一个可以接收三个参数的函数,函数体内返回三个数字的和。并将结果打印在控制台。
3.函数的作用域
1.变量作用域
作用域表示的是变量或函数的可访问范围。
js中的作用域分为两种:
1.函数作用域:只在函数范围内有效
函数作用域又称为局部变量,只在声明的函数中有效
2.全局作用域:js代码的任何位置都有效
全局作用域又称全局变量,一经声明,任何位置都能使用。
1.不在function中声明的变量,为全局变量
2.声明变量不使用var ,无论任何位置声明,都是全局变量(不推荐)
2.注意
1.全局变量和局部变量冲突时,优先使用局部变量。
2.声明提前
js程序正式执行之前,function声明的函数,会将所有var声明的变量,都预读到所在作用域的顶部,但赋值还是保留在原位置。
函数同样也有声明提前的功能。
3.按值传递
1.什么是按值传递
原始数据类型,在做参数传递时,都是按照“值传递”的方式来传参。
值传递:真正传递参数时,实际上传递的是值的副本(复制出来一个值),而不是原始值。
*以后不要把原始数据类型拿到函数中去修改值。
练习:
1.创建变量score,赋值为90;
2.再创建函数changeScore(num),在函数体内将num+5再输出。
3.调用changeScore函数,并将score以实参传入函数,再输出score的值。
3.函数作用域
分为两种:
1.局部函数
在某个function中声明的函数
2.全局函数
在最外层<script>定义的函数就是全局函数,全局函数一经定义,任何位置都能调用。
4.ECMAScript提供一组全局函数
1.parseInt();
2.parseFloat();
3.Number();
4.isNaN();
5.encodeURI();
URL:Uniform Resource Locator统一资源定位器,俗称:路径
URI:Uniform Resource Identifier(标识符)
作用:对统一资源标识符进行编码,并返回编码后的字符串。
所谓的编码,就是将地址中多字节的文字编码成单字节文字。
6.decodeURI();
作用:对已编码的URI进行解码,并返回解码后的字符串。
7.encodeURIComponent();
在encodeURI的基础上,允许对特殊字符进行编码。
8.decodeURIComponent();
允许对特殊字符解码。
9.eval();
作用:执行以字符串表示的js代码
练习:
定义一个函数,在函数体内接收弹出框输入的一段js代码(document.write("<h1>js全局函数</h1>")),并用eval函数来执行该段js代码。
5.递归调用
递归:在一个函数的内部再一次调用自己。
问题:想要求5的阶乘
5! 5*4*3*2*1 -->5*4!
4! 4*3*2*1 -->4*3!
3! 3*2*1 -->3*2!
2! 2*1 -->2*1!
1! 1*1
求n的阶乘,用一个函数表示?
function f(n){
/*if(n==1){
return 1;
}else{
return n*f(n-1)
}*/
return n==1?1:n*f(n-1)
}
效率:
在本次调用还未结束时,就开始下次的调用,本次调用就会被挂起,直到所有的调用都完成之后,才会依次返回,调用次数越多,效率越低。
练习:
以下数列(斐波拉契数列)
1,1,2,3,5,8,13,21,34,55......
通过f(n)计算数列中第n个数字的值。
已知:
该数列中第一个数和第二个数都是1。
从第三个数开始,每个数字都是前两个数字的和。
f(1)=1
f(2)=1
f(3)=f(2)+f(1)
f(4)=f(3)+f(2)
...
f(n)=f(n-1)+f(n-2)
JS基础-运算符-函数的更多相关文章
- js基础——运算符
爱创课堂前端培训--js基础 运算符一.运算符 运算符(Operators,也翻译为操作符),是发起运算的最简单形式.分类:(运算符的分类仁者见智,本课程进行一下分类.)数学运算符(Arithmeti ...
- JS基础:函数
函数声明和函数表达式 在 JS 中定义函数的方式有两种:一种是函数声明,一种是函数表达式. 例如: //函数声明 function fun() { ... } //函数表达式 var f = func ...
- JS笔记 运算符 函数
1.运算符 1.位运算符 将数字转换为二进制后进行运算 只做整数运算,如果是小数的话,则去掉小数位再运算 2.位运算 1.按位 与:& 语法:a&b; 2.按位 或| 语法:a|b 任 ...
- js基础-运算符
100 * "20" 字符串转数字 5 * "ss" NAN "ss" 转数字返回NAN 任何数字与NAN +-*/ 都返回NAN 5/N ...
- Js基础之函数
定义函数:我们使用function标签来定义函数 使用函数:JavaScript函数定义完毕是不能自动执行的,需要我们调用或者事件触发,比如点击事件,鼠标事件,键盘事件等. 下面我们以点击事件为例,调 ...
- js基础:函数表达式和函数声明
函数表达式和函数声明的区别.实际上,解析器在向执行环境中加载数据是,对函数表达式和函数声明并非一视同仁.解析器会率先读取函数声明,并使其在执行任何代码之前可用.而函数表达式,则必须等到解析器执行到它所 ...
- JS基础语法---函数作为返回值使用
结论:函数是可以作为返回值使用的 function f1() { console.log("f1函数调用了"); return function() { console.log(& ...
- JS基础语法---函数作为参数使用---回调函数
1. 函数可以作为参数使用, 如果一个函数作为参数, 那么我们说这个参数(函数)可以叫回调函数 2. 只要是看到一个函数作为参数使用了, 那就是回调函数 function sayHi(fn) { co ...
- JS基础语法---函数也是一种数据类型
1. 如何获取某个变量的类型? typeof 2. 函数是有数据类型 ,数据类型:是function function f1() { console.log("我是函数"); } ...
随机推荐
- [UE4]Scroll Box带滚动条的容器
一.黑边,当可以往下滚动的时候,下边会出现黑边.当可以往上滚动的时候,上边也会出现黑边. Scroll Box.Style.Style:也可以自定义上下左右黑边的样式: 二.Scroll Box. ...
- spring 入门demo
相关资源 官网地址:http://projects.spring.io/spring-boot/ 创建maven项目 勾选箭头处,创建一个简单的项目 填写groupId和artifactId,点击确 ...
- PHP 设计模式(一)
基础的三种设计模式 工厂模式 为创建对象提供了一个统一的接口,好处是当被创建对象命名空间或者名称改变时,直接修改工厂的创建方法即可 <?php class Factory{ public sta ...
- 解决PHP使用POST提交数据不完整,数据不全的问题
在后台form中,通过ajax请求返回了一个有很多input的form表单,提交数据后,要格式化数组时发现提交过来的数据不完整. PHP从5.3.9开始 php.ini 增加一个变量 max_inpu ...
- 深入理解Java虚拟机之Java内存区域随笔
1.java内存区域与内存溢出异常 Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域:1.程序计数器,2.栈(虚拟机栈和本地方法栈 ),3.堆,4.方法区(包含 ...
- 003之MFCSocket异步编程(指针机制)
002篇是采用传统方式创建,不适应动态的网络环境,服务器为客户端保留着断开连接时的套接字,不够灵活.而采用指针机制不仅可以更加灵活性,而且能使代码更集中,更具有条理性.将其转变成指针机制.功能及运行保 ...
- Git如何在不提交当前分支的情况下切换到其它分支进行操作——git stash
假如现在的Bug你还没有解决,而上边又给你派了一个新的Bug,而这个Bug相比较现在正在苦思冥想的Bug比较容易解决. 你想先解决新的Bug,可是之前的Bug还没有解决完而不能提交.怎么办? 解决方法 ...
- MySQL中基于mysqldump和二进制日志log-bin进行逻辑备份以及基于时间点的还原
本文出处:http://www.cnblogs.com/wy123/p/6956464.html 本文仅模拟使用mysqldump和log-bin二进制日志进行简单测试,仅作为个人学习笔记,可能离实际 ...
- SQL Server error
原因:文件没有权限 出错: TITLE: Microsoft SQL Server Management Studio------------------------------ Attach dat ...
- Spring学习,初识Spring
Spring概述 将Spring理解为管理对象间依赖关系的容器 “解耦” 根据功能的不同,可以将一个系统中的代码分为 主业务逻辑 与 系统级业务逻辑 两类 ```Spring 是为了解决企业级开发的复 ...