初识JavaScript
JavaScript是世界上最流行的语言之一,是一种运行在客户端的脚本语言(Script是脚本的意思)
- 脚本语言:不需要编译,运行过程中由js解释器(js引擎)逐步解释并执行。
最大的优势是可以直接执行在浏览器中,本地生成一个空的html文件,然后通过script标签引入js文件
一些简单的语句,可以直接使用开发者工具的console面板
console.log(“Hello World”);将值输出到控制台上
document.body.innerHTML=“Hello World”;将网页body元素的内容替换成新的HTML
基本数据类型与类型转换
-
字符串string:通过单引号或双引号定义
console.log(“hello world”==‘hello world’);
console.log(‘say"hello world"’);
console.log(“say ‘hello world’”);
console.log(‘say’hello world’');
/单引号里可以加双引号
双引号里可以加单引号
单引号里加单引号要转义/
-
数字number:只有一种类型,浮点数
-
布尔类型boolean:true或false
-
typeof操作符
console.log(typeof 1,typeof(‘’),typeof false);
-
undefined与null
console.log(undefined,typeof undefined);
console.log(null,typeof null); -
自动类型转换
console.log(1+“1”,null+“is not”+undefined);
console.log(+‘1’,+(1+‘1’),+‘不是一个数字’);
console.log(typeof NaN);
-
+:强制转换
双等号和三等号:推荐使用三等号,因为双等号(==)会进行强制类型转换console.log(1===“1”,1=true,0=false,null===undefined);//都是假的
falsy值;false0空字符串null undefined NaN
console.log(
1= =1.,
1= =“1”,
1= =true,
0= =false,
’ '= =false,
null= =undefined,
);//都是真的
if(false||0||''||undefined||null||NaN)//都是假的
{
console.log('不应该走到这里!!!');
}
else{
console.log('falsy 值')
}
不可以重复声明
let a=1+2;//变量声明语法
console.log(typeof a);//number
a="33";
console.log(typeof a);//string
let empty;
console.log(empty);//undefined
const不可修改
内部的变量可以屏蔽外部的变量
let num=100;
let str=".";
console.log('作用域1',num,str);
{
let str="-";
console.log('作用域2',num,str);
{
let num=200;
num+=10;
str+="-";
console.log('作用域3',num,str);
}
num++;
str+="-";
console.log('作用域2',num,str);
}
console.log('作用域1',num,str);
函数
function add(a,b)
{
return a+b;
}
console.log(typeof add);//function
console.log(add(1,2));//3
function voidFunc(a,b)
{
console.log('voidFunc参数',a,b);
}//voidfunc 参数 1 2
console.log(voidFunc(1,2));//undefined
voidFunc();//undefined
voidFunc(1);//1 undefined
voidFunc(1,2,3);//1 2
参数无值默认为undefined
函数提升,函数定义可以写在调用的后面
const minius1=function minius2(a,b){
return a-b;
};
const minius3=function(a,b){
return a-b;
};
const minius4=(a,b)=>{
return a-b;
}//箭头函数
const minius5=(a,b)=>a-b;//如果函数体只是一个表达式,可以把大括号和return省略掉
const returnSelf=x=>x;//只有一个参数,可以小括号省略掉
函数可以作为参数
function binaryOperator(operand1,operand2,func){
const res = func(operand1,operand2,func);
console.log(res);
return res;
}
binaryOperator(2,5,add);
binaryOperator(2,5,(a,b)=>a*b);
binaryOperator(2,5,(a,b)=>a/b);
const buildRepeatChar=char=>{
return num=>{
let res='';
while(num--){
res+=char;
}
return res;
}
}//生成函数的函数
const repeatDot=buildRepeatChar('.');
console.log(repeatDot(4)+'点');
console.log(buildRepeatChar(' ')(4)+'空格');
const buildRepeatCharWithLog=char=>{
let count=0;
return num=>{
count++;
console.log(''+count+''+char)
let res=' ';
while(num--){
res+=char;
}
return res;
}
}
const repeatBar=buildRepeatCharWith('-')//第1次调用,重复字符为-
const repeatExclamatory=buildRepeatCharWithLog('!')//
console.log(repeatBar(4));//----
console.log(repeatExclamatory(4));//!!!!
repeatBar(4);
repeatExclamatory(4);