- JS是一门运行在浏览器中的编程语言,用来制作网页动态特效。
- 所有JS代码写在script标签中
1.JS和java没有关系
2.JS是一门解释性语言
- 编译型:运行效率高,不能跨平台
- 解释性:运行效率低,可以跨平台
3.JS存在浏览器兼容问题
内核 | 浏览器 |
---|---|
Trident | IE系列 |
WebKit | Safari Chrome早期版本 |
Blink | Chrome后期版本 |
Gecko | FireFox |
变量:内存中保存数据的基本单位,内存中一块存储空间
JS是一门弱类型编程语言
- 强类型特点:内存利用率高,编程要求较高
- 弱类型特点:内存空间利用率低,编程简单
JS一般通过
var
来定义变量,但是通过该关键字定义的变量有时候会变成全局变量
<script type="text/javascript">
if(1){
var c=10;
}
alert(c);
</script>
结果是10
即在{
}中定义一个变量,在外部依然可以访问
let
所声明的变量,只在let命令所在的代码块中有效
ES5中,是没有办法定义常量的,但是到了ES6,有了对常量的定义
number、string、boolean
- 0=>
false
非0=>true
- null=>
false
非null=>true
- “”=>
false
非""=>true
= += -= *= /= %=
++ –
+ - * / %
> < >= <= == != === !==
== 比较内容,不比较类型,类似于equals
=== 比较内容和类型
&& || !
boolean值? 值1:值2
typeof 值
//返回值的实际类型:number、string、boolean
- 两种写法
typeof c
typeof(c)
与java一致,这里不再叙述
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
var a = 10;
if(a %2 == 0){
console.log("偶数");
}else{
console.log("奇数");
}
var b = "abc";
switch(b){
case 1:console.log("值为1");break;
case 2:console.log("值为2");break;
case "abc":console.log("值为abc");break;
default:
console.log("其它情况");break;
}
var i = 1;
while(i<=10){
console.log("hello world "+i);
i++;
}
var j = 1;
do{
console.log("hello world"+j);
j++;
}while(j <= 10);
for(var k = 1; k<=10; k++){
console.log("hello world"+k);
}
</script>
</body>
</html>
函数:实现一个特定功能的代码块
function 函数名(形参列表){
//函数体
}
函数名(实参列表)
function sum(i,j){
console.log("i="+i);
console.log("j="+j);
//通过arguments获取函数调用时实际参数列表
console.log(arguments);
return i+j;
}
sum(10,20);
sum(10);
sum(10,20,30);
<script type="text/javascript">
// 假设num2的默认值是2
function add(num1, num2 = 2){
// 直接在参数上直接赋值即可
return num1 + num2;
}
console.info(add(20)); // 22
console.info(add(20 , 8)); // 28
</script>
function outer(i,j){
console.log("i="+i+",j="+j);
//inner函数可以在外部函数内任意位置使用
inner(1);
function inner(k){
console.log("k="+k);
}
inner(30);
}
outer(10,20);
// inner内部函数不能在外部调用
// inner(30);×
// outer.inner(30);
function f(){
console.log("hello world");
return 10;
}
//f作为函数代表一段代码,f赋值给a,此时a也表示这段代码
var a = f;
f();// hello world
a();// hello world
//a表示一段代码(函数)b表示函数运行后的结果
var b = f();
console.log(b);
//定义a函数
function a(){
console.log("hello world");
}
//定义b函数
function b(f){
console.log(f);
}
//给b函数传普通实参
b(10);
//a函数作为值赋值给变量c
var c = a;
c();
//a赋值给f变量,a此时作为实参
b(a);
// i和j接收数值 f接收操作i和j的函数
function fun2(i,j,f){
console.log(i);
console.log(j);
console.log(f);
console.log(f(i,j));
}
function a(){
console.log("hello world");
}
var b = a;
//定义匿名函数,赋值给变量,变量表示该函数
var c = function(){
console.log("hello world");
};
b();
c();
与java中的lambda表达式类似
<script type="text/javascript">
let show = username => console.info("Hello:" + username);
show("李四");
</script>
/**
语法:
let 函数名 = 参数名 => 函数体
*/
<script type="text/javascript">
let add = (num1,num2) => console.info(num1 + num2);
add(10,20);
</script>
/*
多个参数需要使用【()】小括号给括起来.
*/
<script type="text/javascript">
let info = () => console.info("打印信息");
info();
</script>
/*
即使函数没有参数,也需要使用【()】小括号来去表示,来去代表参数部分
*/
<script type="text/javascript">
let length = (str) => {
if(str){
return str.length;
}
return 0;
}
console.info(length("123"));
</script>
/*
函数体有多条语句时候,需要使用【{}】花括号包裹起来
*/
- 单个参数则()可省略
- 单条语句则{}可省略
- 若单条语句为一表达式,则自带return,即return可省略