整理了一下JS的基础语法,这里做下记录。
1 <!--Js的三大模块:ECMAScript(基本语法)、DOM(Document Object Model:文档对象模型,用于操作页面元素)、BOM(Browser Object Model:浏览器对象模型,用于操作浏览器)-->
2 <html>
3 <head>
4 <meta charset="utf-8"> <!--设置html界面采用utf-8字符集-->
5 <title>js的基本语法(ECMAScript)</title>
6
7 <!--内部JavaScript-->
8 <script type="text/javascript">
9 /*js中变量类型有:Number(数字类型)、String(字符串类型)、Boolean(布尔类型)、Null(空类型)、Undefined(未赋值)、Object(对象)*/
10 //数字类型
11 var num;
12 num = 0; //可以先声明一个变量,后赋值
13 var num1,num2,num3;
14 num1=100,num2=200,num3=300; //也可以一次性声明多个变量,然后赋值
15 var num4=400,num5=400,num6=400; //还可以一次性声明多个变量,并同时赋值
16 alert(num); /*alert:弹框*/
17 console.log(num3.toString()); //转换为字符串类型,如果被转换的对象是null,就不能用toString(),得用String()
18 console.log(Boolean(num)); //输出false(因为num=0),将数字转换为Boolean类型
19 console.log(Boolean(num1)); //输出true(因为num1>0),将数字转换为Boolean类型
20
21 //字符串类型
22 var str="我是字符串类型,";
23 var str1="你是谁? "
24 var str2="100";
25 var str3="100.99";
26 var str5="Hello World";
27 var str6="语文-数学-英语-物理-化学";
28 for(var i=0;i<str5.length;i++){ //遍历字符串
29 console.log(str5[i]);
30 }
31 console.log(str);
32 console.log(str+str1); //字符串拼接
33 console.log(str.length); //获取字符串的长度
34 console.log(str1.trim()); //去除字符串两端的空格
35 console.log(str5.toLocaleLowerCase()); //将字符串转换为小写
36 console.log(str5.toLocaleUpperCase()); //将字符串转换为大写
37 console.log(str6.split("-")); //根据“-”,分割字符串,转成数组(可遍历取出每个元素)
38 console.log(str5.slice(2,5)); //输出llo,从字符串索引2的位置,截取到索引5的前一位(不包括索引5所在的字符)
39 console.log(str5.indexOf("l")); //从左往右找字符,输出字符串str5中,l字符所在的索引
40 console.log(str5.indexOf("l",2)); //从左边第二个字符开始往右找,输出字符串str5中,l字符所在的索引。不存在则输出-1
41 console.log(str5.lastIndexOf("l")); //从右往左找字符,输出字符串str5中,l字符所在的索引
42 console.log(Number(str2)); //输出100,将str2转换为数字类型,如果str2不能转为数字,则返回NaN
43 console.log(parseInt(str3)); //输出100,将str3转换为数字类型,并同时取整(不四舍五入)
44 console.log(parseFloat(str3)); //输出100.99,将str3转换为浮点数
45
46 //布尔类型
47 var bool=true;
48 console.log(bool);
49
50 //Undefined类型
51 var und; //只声明不赋值,该对象就是Undefined类型
52 console.log(und); //输出undefined
53 console.log(und+10); //这个会输出NaN,因为und没有赋值,所以是Undefined类型,Undefined加上任何类型都会输出NaN
54
55 //空类型
56 var nul=document.getElementById("abcd"); //因为body里没有值为abcd的id,所以这里就会返回空类型
57 console.log(nul);
58 console.log(String(nul)); //将空类型转为字符串,必须用String(),不能用toString()
59
60 //获取数据类型
61 console.log(typeof(str));
62 console.log(typeof(nul)); //空类型获取数据类型是,返回的是Object类型
63
64 //变量的预解析
65 console.log(pre); //将变量使用,放在变量声明前面,仍能执行,就叫变量的预解析。但输出的却是undefined,不是下面的变量内容。可如果下面没有声明变量,就会报错了。
66 var preVar="我是预解析变量!"
67
68
69
70 /*js中的操作符:算术运算符、复合运算符、关系运算符、逻辑运算符、一元运算符*/
71 //算数运算符:+ - * / %
72 var num=100;
73 var sum=num+100;
74 console.log(sum);
75
76 //复合运算符:+= -= *= /= %=
77 var num1=100;
78 num1+=200;
79 console.log(num1); //输出300
80
81 //关系运算符:> < >= <= == === != !==
82 var num2="100";
83 var num3=100;
84 console.log(num2==num3); //结果是true,使用2个等于号(等于)的时候,只要数值相等就返回true
85 console.log(num2===num3); //结果是false,使用3个等于号(恒等于)时,会同时比较数值和数据类型,所以返回false
86
87 //逻辑运算符:& || !
88
89 //一元运算符:++ --
90 var num4=100;
91 num4++;
92 console.log(num4); //输出101
93
94
95
96 /*js中的语句*/
97 //if-else
98 var num1=200;
99 var num2=100;
100 if(num1>num2){
101 console.log(num1);
102 }else{
103 console.log(num2);
104 }
105
106 //if-else if-else
107 var money=13000;
108 if(money>=20000){
109 console.log("个人所得税25%");
110 }else if(money>=15000){
111 console.log("个人所得税20%");
112 }else if(money>=10000){
113 console.log("个人所得税15%");
114 }else{
115 console.log("无需缴税");
116 }
117
118 //三元表达式:var var1=expression1?expression2:expression3
119 var num1=100;
120 var result=(num1%7)==0?"可以被7整除":"不能被7整除";
121 console.log(result);
122
123 //switch
124 var level="A";
125 switch(level){
126 case "A":console.log("90~100");break;
127 case "B":console.log("80~90");break;
128 case "C":console.log("70~80");break;
129 default:console.log("不及格");
130 }
131
132 //while循环语句
133 var i=1;
134 while(i<=10){
135 console.log(i);
136 i++;
137 }
138
139 //do while循环语句
140 var i=1;
141 do{
142 console.log(i);
143 i++;
144 }while(i<=10);
145
146 //for循环语句
147 for(var i=1;i<=10;i++){
148 console.log(i);
149 }
150
151 //循环中的continue和break
152 //continue; //跳过此次循环,继续下一次循环
153 //break; //结束循环
154
155
156
157 /*js中的数组*/
158 //通过构造函数创建
159 var arr=new Array(); //创建一个空数组
160 var arr1=new Array(5); //创建一个长度为5的数组
161 var arr2=new Array(10,20,30,40,50); //创建一个长度为5的数组,并同时赋值
162 arr2[2]=300; //通过索引给数组赋值
163 console.log(arr);
164 console.log(arr1);
165 console.log(arr2);
166 console.log(arr2[1]); //输出数组arr2里的第2个元素
167
168 //基本类型创建数组
169 var arr3=[10,20,30,40]; //创建一个长度为4的数组,并同时赋值
170 var arr4=["h","e","l","l","o"]; //创建一个长度为5的数组,并同时赋值
171 console.log(arr3);
172
173 //遍历数组,并输出元素
174 for(var i=0;i<arr3.length;i++){
175 console.log(arr3[i]);
176 }
177
178 //遍历数组,并拼接字符串
179 var str4=""; //这里必须有="",否则str4就是Undefined类型
180 for(var i=0;i<arr4.length;i++){
181 var str4=str4+"-"+arr4[i];
182 }
183 console.log(str4);
184
185 //将数组前后对应的元素交换
186 var temp="";
187 for(var i=0;i<arr4.length/2;i++){ //获取交换次数
188 temp=arr4[i];
189 arr4[i]=arr4[arr4.length-1-i];
190 arr4[arr4.length-1-i]=temp;
191 }
192 console.log(arr4);
193
194 //求数组中最大值
195 var max=arr3[0];
196 for(var i=1;i<arr3.length;i++){
197 if(max<arr3[i]){
198 max=arr3[i];
199 }
200 }
201 console.log(max);
202
203 //数组的冒泡排序
204 var arr5=[20,10,40,50,30];
205 for(var i=0;i<arr5.length-1;i++){ //获取总共比较几轮(5个元素就比较4轮)
206 for(var k=0;k<arr5.length-1-i;k++){ //获取每轮比较几次(第一轮比较4次:5-1-0)
207 if(arr5[k]<arr5[k+1]){ //前面的元素比后面小,则交换
208 var temp="";
209 temp=arr5[k];
210 arr5[k]=arr5[k+1];
211 arr5[k+1]=temp;
212 }
213 }
214 }
215 console.log(arr5);
216
217 //数组的方法
218 console.log(arr3.length); //获取数组的长度
219
220
221
222 /*js中的函数*/
223 //静态函数
224 //声明
225 function getSum1(){
226 var num1=10;
227 var num2=20;
228 var sum=num1+num2;
229 console.log(sum);
230 }
231 //调用
232 getSum1();
233
234 //有参数的函数
235 function getSum2(num1,num2){
236 var sum=num1+num2;
237 console.log(sum);
238 }
239 getSum2(40,50);
240
241 //有返回值的函数
242 function getSum3(num1,num2){
243 var sum=num1+num2;
244 return sum;
245 }
246 var result=getSum3(50,50);
247 console.log(result);
248
249 //匿名函数
250 var sayHi=function(){ //因为是匿名函数,所以需要定义一个变量来接收函数值
251 console.log("hello world!");
252 }
253 sayHi(); //调用匿名函数
254
255 //有隐式全局变量的函数
256 function variable(){
257 dog="小狗"; //变量前面没有var,就是隐式全局变量
258 console.log(dog);
259 }
260 variable();
261
262 //函数的预解析
263 pre(); //将函数调用,放在函数声明前面,仍能正常执行,这就叫函数的预解析
264 function pre(){
265 console.log("我是预解析函数!");
266 }
267
268 //函数的方法
269 function nums(){
270 console.log(arguments[0]); //输出第一个参数
271 console.log(arguments.length); //arguments.length,获取函数一共传入了几个参数
272 }
273 nums(10,20,30,40,50,60); //输出6
274
275
276
277 /*js中的对象*/
278 //用构造函数创建对象
279 var person=new Object();
280 person.name="小明"; //这是对象的属性
281 person.sex="男";
282 person.height="170";
283 person.sayHi=function(){ //这是对象的方法
284 console.log("hello");
285 }
286 console.log(person.name); //输出对象的某个属性
287 person.sayHi(); //调用对象的方法
288
289 //用函数的方式创建对象,并给对象的属性赋值
290 function persons(name,height){
291 var pers=new Object();
292 pers.name=name;
293 pers.height=height;
294
295 pers.sayHello=function(){
296 console.log("大家好,我是"+pers.name+",我的身高是"+this.height); //这里用对象名或者this都可以
297 }
298 return pers;
299 }
300 var per1=persons("张三",180); //创建一个persons对象
301 per1.sayHello();
302
303 //自定义构造函数创建对象
304 function human(name,height){
305 this.name=name;
306 this.height=height
307 this.sayHello1=function(){
308 console.log("大家好,我是"+this.name+",我的身高是"+this.height);
309 }
310 }
311 var per2=new human("李四",170); //注意这里new的不是Object,而是human
312 per2.sayHello1();
313
314 //字面量形式创建对象
315 var obj={
316 name:"小明", //这里使用逗号,不是分号
317 age:18,
318 height:170,
319 sayHello2:function(){
320 console.log("我是"+this.name+",我的年龄是"+this.age+",我的身高是"+this.height);
321 }
322 }
323 console.log(obj.name); //输出name属性值(方法一)
324 console.log(obj["name"]); //输出name属性值(方法二)
325 obj.sayHello2(); //调用sayHello2方法(方法一)
326 obj["sayHello2"](); //调用sayHello2方法(方法二)
327
328 //声明json对象
329 var jason={
330 "name":"王五",
331 "age":"18",
332 "height":"183"
333 }
334 console.log(jason.name); //第1种输出方法
335 console.log(jason["age"]); //第2种输出方法
336 var key="height";
337 console.log(jason[key]); //第3种输出方法
338
339 //遍历json对象
340 for(var key in jason){ //因为json是无序的,所以不能用for(int i=0;i<...)这种方式遍历
341 console.log(key);
342 console.log(jason[key]);
343 }
344
345 //对象的方法
346 console.log(per2 instanceof(human)); //instanceof:per2是否属于human类,返回值是true/false
347
348 //Math对象:静态对象,无需创建
349 Math.PI; //获取PI值
350 Math.abs(-11); //11,获取绝对值
351 Math.max(10,20,50,70); //70,获取一组数据的最大值
352 Math.min(10,20,50,70); //10,获取一组数据的最小值
353 Math.random(); //获取随机数
354 Math.sqrt(); //获取平方根
355
356 //Date对象
357 var dt=new Date();
358 console.log(dt); //输出当前时间
359 console.log(dt.getFullYear()); //获取年
360 console.log(dt.getMonth()+1); //获取月:因为国外是从0开始,所以我们要+1
361 console.log(dt.getDate()); //获取日
362 console.log(dt.getHours()); //获取小时
363 console.log(dt.getMinutes()); //获取分钟
364 console.log(dt.getSeconds()); //获取秒
365 console.log(dt.getDay()); //获取星期几,0代表周日
366 console.log(dt.toLocaleDateString()); //获取年月日
367 console.log(dt.toLocaleTimeString()); //获取时分秒
368 </script>
369 </head>
370
371 <body>
372 <div id="abc"></div>
373 <input type="button" value="点击" onclick="alert('hello world!')"></input> <!--按钮,值显示“点击”,点击事件:出现hello world弹出框-->
374
375 <!--引入外部JavaScript-->
376 <!--js的引用一般放在body的最后,因为js引入时,页面会停止加载。如果放在head里面,就会出现js引入完了,页面还没加载完成,导致报错-->
377 <script type="text/javascript" src="javascript.js"></script>
378 </body>
379 </html>
。