大家好,小编来为大家解答以下问题,javascript语言入门教程,javascript语法简明手册,现在让我们一起来看看吧!
目录
对于在浏览器上执行的JS来说,可以视为三部分
1.JS核心语法
2.DOM API:浏览器提供的一组,操作页面元素的API
3.BOM API: 浏览器提供的一组,操作浏览器窗口的API
前置知识
JavaScript书写形式
行内式
直接嵌入到 html 元素内部
<body>
<button onclick="alert('hello')">这是一个按钮 </button>
</body>
内嵌式
写到 标签中
<body>
<>alert('hello')</>
</body>
外部式
把JS写到一个单独的.js文件中,在html里面通过来引入
<body>
< src="app.js"></>
</body>
alert('hello app.js')
输出 (console.log)
会把日志给输出到控制台中,此处的控制台不是系统的黑框框,而是浏览器自己的控制台(在开发者工具中可以看到)
<body>
<>
console.log('hello');
</>
</body>
如果JS代码中,出现一些语法错误,或者运行时错误,也会在控制台中显示出来
<body>
<>
console.log('hello');
consol.log('hello');
</>
</body>
基础语法
变量
定义变量
var 变量名=初始值;
<>
var num=10;//创建了一个名字为num的,数字类型的变量
var s='heello';//创建了一个名字为s的,字符串类型的变量
var arr=[];//创建了一个名字为arr的,数组类型的变量
</>
不管创建的变量是什么类型,此时统一使用var这个关键字来表示,至于变量是什么类型,取决于初始化的值,是什么类型
变量的类型,可以在运行过程中,随着赋值而发生改变,这种行为,称为“动态类型”(运行时)。像Java这样的语言,不支持这用运行时类型发生改变,这种行为称为“静态类型”Python解释器的安装步骤。
var a=10;
a='hello';
console.log(a);
现在更倾向于使用let来代替var
基本数据类型
JS 中内置的几种类型
number: 数字
不区分整数和小数.
特殊的数字值NAN
console.log('hello'-10);
boolean:布尔类型
true 真, false 假.
在JS中,布尔类型会被当成0 和1 来处理
let a=true;
console.log(a+3);
这种被称为“隐式类型转换”。
如果一个编程语言,越支持隐式类型转换,认为类型越弱
如果一个编程语言越不支持隐式类型转换,认为类型越强
string: 字符串类型
🎀如果字符串本身就包含了引号,这个时候就可以通过单双引号灵活搭配的形式,来避免使用转义字符
let s='my name is "hhh" ';
console.log(s);
let s2="my name is ' mmmm' ";
console.log(s2);
🎀如果字符串里既有单引号又有双引号,就要使用转义字符
let s3="my 'name' is \"gggg\" ";
console.log(s3);
🎀求长度
通过length属性
let s="hello world";
console.log(s.length);
🎀字符串拼接
直接使用 + 来拼接
let a="hello";
let b=20;
console.log(a+b);
undefined:未定义数据类型
只有唯一的值 undefined. 表示未定义的值.(非法情况)
一个未被初始化变量的值就是undefined
let a;
console.log(a);
null:空值类型
只有唯一的值 null. 表示空值.(合法情况)
null表示当前这个值属于“没有值”这个概念。
运算符
JavaScript 中的运算符和 Java 用法基本相同。
(1)JS中比较相等有两种
- ==
!=
只是比较两个变量的值,而不是比较两个变量的类型。如果两个变量能够通过隐式类型转换,转成相同的值,此时就认为,也是相等的。 - ===
!==
既要比较变量的值,也要比较变量的类型。如果类型不相同,就认为不相等
let a=10;
let b='10';
console.log(a==b);
console.log(a===b);
(2)JavaScript中的 &&、|| 和Java中的 && 、|| 差别挺大
Java中的 && 、|| 返回的是一个true 或false
JS中的&& 、|| 返回的是一个表达式
c=a || b
如果a的值为真(非0),此时c的值就是表达式a的值
如果a的值为假(为0),此时c的值就是表达式b的值
c=a&&b
如果a的值为假,此时c的值就是表达式a的值
如果a的值为真,此时c的值就是表达式b的值
因此衍生出了JS中的一种习惯用法
判断变量是否为“空值”,如果是空值,则赋予一个默认的值。
(3)/ 与Java中也不同
console.log(1 / 2);
JS不区分整数和小数,都是number
数组
数组创建
let arr=new Array();//很少使用
let arr2=[1,2,3,4];
let arr3=[1,'hello',null,undefined,true];
打印数组
JS通过console.log就可以打印数组内容
let arr=new Array();//很少使用
let arr2=[1,2,3,4];
let arr3=[1,'hello',null,undefined,true];
console.log(arr);
console.log(arr2);
console.log(arr3);
获取数组元素
(1)通过下标来获取元素,下标从0开始计算
let arr=[1,2,3,4];
console.log(arr[0]);
console.log(arr[1]);
console.log(arr[2]);
console.log(arr[3]);
(2)当访问一个超出数组范围下标的时候,得到的结果是undefined,并不会抛出异常
let arr=[1,2,3,4];
console.log(arr[100]);
console.log(arr[-1]);
(3)
let arr=[1,2,3,4];
arr[100]=10;
console.log(arr);
长度变成了101,然后数组的 内容,前4个元素还是1,2,3,4,下标为100的元素是10,但是中间的元素仍然是undefined。
(4)
let arr=[1,2,3,4];
arr[-1]=10;
console.log(arr);
此时-1与其说是下标,不如说是一个“属性”。并没有影响到数组长度。(类似于键值对)
(4a)
let arr=[1,2,3,4];
arr['hello']=20;
console.log(arr);
获取数组长度
let arr=[1,2,3,4,5];
console.log(arr.length);
JS中的length是可以改的
let arr=[1,2,3,4,5];
arr.length=3
console.log(arr.length);
console.log(arr);
arr.length=7;
console.log(arr);
往数组中新增元素
最常见的操作,push方法,能够给数组末尾追加一个元素
let arr=[];
for(let i=0;i<10;i++){
arr.push(i);
}
console.log(arr);
删除数组中的元素
splice方法,针对数组中的某个区间进行替换,既可以删除,也可以插入元素。
let arr=[1,2,3,4,5,6];
arr.splice(2,3,100,200,300,400);
console.log(arr);
函数
语法格式
<>
function hello(){
console.log('hello');
}
// 如果不调用函数, 则没有执行打印语句
hello();
</>
- 给函数指定参数的时候,是不需要写参数类型的
<>
function add(x,y){
return x+y;
}
let result=add(10,20);
console.log(result);
result=add('hello','world');
console.log(result);
result=add('hello',10)
console.log(result);
</>
传入的实参类型是可以任意的,只要能够支持函数内部的逻辑(比如此处要求两个参数进行相加即可)
参数个数
一般要求写代码的时候,都需要调用的时候传入的实参、个数和形参匹配。但是JS并没有在语法上做出这样的限制。如果实参和形参个数不一样,也不是完全不可以!
<>
function add(a,b,c,d,e,f,g){
a=a || 0;
b=b || 0;
c=c || 0;
d=d || 0;
e=e || 0;
f=f || 0;
g=g || 0;
return a+b+c+d+e+f+g;
}
console.log(add(10,20));
console.log(add(10,20,30));
console.log(add(10,20,30,40));
</>
函数表达式
在JS中,函数是“一等公民”
函数,就像一个变量一样,可以被赋值给其他的变量,也可以作为另一个函数的参数,也可以 作为另一个函数的返回值。(函数和普通的变量,没有本质区别,但是函数这样的变量相比于普通变量多了个功能,可调用)
<>
function hello(){
console.log('hello');
}
let f=hello;
console.log(typeof(f));//打印函数类型【function】
f();
</>
上述代码的简化:
作用域
在JS中,{}内部的代码,是可以访问到{}外部的变量的。
<>
let num=10;
function hello2(){
function hello(){
console.log(num);
}
hello();
}
hello2();
/>
JS中的作用域,是支持“逐级向上”查找的。
当前是在hello这个函数里,尝试打印num,但是在hello中,没有num变量,于是往上找,找到了hello2这里,但是在hello2这里,也没有num,于是继续往上找,找到了全局作用域,找到了num。
- 如果在作用域链的不同节点上,存在多个同名的变量怎么办?
从里往外找,找到谁就是谁。
<>
let num=10;
function hello2(){
let num=20;
function hello(){
console.log(num);
}
hello();
}
hello2();
</>
对象
对象,就是一些属性和方法的集合。
在Java中,对象需要先有类,然后针对类的实例化才产生对象,Java中,类可以视为是一种自定义的类型。
JS中,对象是不依托类的。在JS中,所有的对象都是一个类型(object)
创建对象
使用 字面量 创建对象【常用】
在JS中,通过{}来创建对象。
<>
let student={
name:'小明',
age:20,
height:180,
weight:120,
sing:function() {
console.log("唱歌");
},
jump:function() {
console.log("跳舞");
},
};
console.log(student.name);
student.sing();
</>
执行结果
每个属性和方法,其实都是通过“键值对”这样的方式来表达的,{}表示这个是对象。
后续就可以根据 student.属性名 方式来进行访问了。
使用 new Object 创建对象
<>
var student=new Object();
student.name="老六";
student.height=189;
student.sayhello=function(){
console.log("hello");
}
console.log(student.name);
student.sayhello();
</>