JavaScript 基础语法
简介
JavaScript 是脚本语言
JavaScript 是一种轻量级的编程语言。
JavaScript 是可插入 HTML 页面的编程代码。
JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。
1、组成部分
1. 核心(ECMAScript)
2. 文档对象模型(DOM)控制页面操作
3. 浏览器对象模型(BOM)控制浏览器中页面意外的操作
2、引入方式
1. <script>写入js代码</script>
2. 导入文件:<script src=" .js"></script>
3、变量声明
3.1 注释和结束符
注释:单行//,多行/**/
结束符:" ; "
3.2 命名规范
驼峰体,首字母小写,userName,(可以加入数据类型:sUserName)
3.3 声明变量
var name = "sun";
一行可以声明多个变量:var sName='sun', iAge=23;
3.4 声明方式
var 全局变量 var 可以声明多次 在全局范围内有效 声明之前,使用会得到undefined。
let 局部变量 let 只能声明一次 代码块内有效 声明之前,使用会报错。
3.5 声明后
声明时未赋值,则得到的时undefined的类型
可以重新声明,声明之后可以在声明,但原来的值不会丢失。如:
var sCarname="Volvo";
var sCarname; // isCarname的值依然是"Volvo"
JavaScript变量提升(hoisting): 函数及变量的声明都将被提升到函数的最顶部,即变量可以在使用后声明,也可以在使用前声明 示例: var x=5; console.log(y); var y=7; //结果是undefined, 这是因为变量声明var y被提升了,但初始化并不会提升, // 解决变量提升,规定每个作用域使用前必须声明变量 // 使用严格模式:use strict, // ES5新增内容,不是一条语句,就是一个字面量表达式,在旧版中会被忽略 // 示例: "use strict"; x = 3.14; // 报错 "use strict"; myFunction(); function myFunction() { y = 3.14; // 报错 (y 未定义) } // 在函数内部声明是局部作用域(只在函数内使用严格模式) x = 3.14; // 不报错 myFunction(); function myFunction() { "use strict"; y = 3.14; // 报错 (y 未定义) }
4、 常量声明
(python中没有常量,有的只是人为定义的常量BASE_PATH)
const pie = 3.141592; // 声明后不能修改且声明时必须赋值,
// 暂时性死区: var pie = 3.1415926; if (true){ console.log(pie); // ReferenceError: pie is not defined const pie = "3.1415"; } // 报错,代码块内如果存在let或者const,代码块会对这些命令声明的变量从块开始就形成一个封闭作用域,
// 代码快内,在声明pie之前使用它会报错。
注意: const如何做到变量在声明初始化之后不允许改变? 其实const保证的不是变量的值不变,而是保证变量指向的内存地址所保存的数据不允许改动。对于简单类型(如number,string,Boolean),值就保存在变量指向的那个内存地址,因此const声明的简单类型变量等于常量;但对于复杂类型(object,array,function),变量指向的内存地址其实保存了一个指向实际数据的指针,所以只能保存指针固定的,至于指针指向的数据结构变不变就无法控制,所以使用const声明复杂类型对象时慎重。
5、数据类型
5.1 基本数据类型
Null, undefined
number,
整数和浮点数,特殊类型NaN: not a number, 当其它类型转换成数字时,得不到结果就是这个NaN
string
Boolean,true和false
5.2 引用数据类型
object 对象
5.3 类型查询
typeof 只能查询到string/number/Boolean/object
undefined和Null得区别:
undefined:
1. 当声明变量未初始化时,该变量的默认值为Undefined,
2. 当函数无明确返回值,返回的也是undefined
Null:
1. 表示尚未存在对象
2. 如果函数或方法要返回的是对象,那么找不到对象返回的就是Null
6、数据类型转换
数字+字符串:12 + "abc" = "12abc"
数字+布尔值:12 + true = 13
字符串+布尔值:true + "abc" = "trueabc"
强制类型转换
parseInt 强制转换成整数
parseInt(3.54) = 3, parseInt("3.54aba") = 3, parseInt("asd3.5") = NaN
parseFloat 强制转换成浮点数
parseFloat("6.12") = 6.12, parseFloat("6sdf")=6, parseFloat("6.12sdfs")=6.12
eval(用法和python一样)
eval("1+1") =2
7、运算符
算术运算符
+,-,*,/,++,--,(i++: 先引用后赋值)
逻辑运算符
==,!=,>, >=, <, <=, &&, ||, !
2 == "2" 结果是true
2==="2" 结果是flase(强等于)
等性运算
布尔==数字 布尔变数字
数字==字符串 字符串便数字
对象==字符串(数字) 对象变字符串(数字)
示例:
true==2 结果是false
undefined==0结果是false
null==2 结果是false
"5"==5结果是true
关系运算符
1. 比较字符串使用ASCII对应的数值,
2. 如果一侧是数字,另一侧是其它类型,如果不能转换成数字类型,就是false
"25" <"2" 结果是false
"Blue" < "alpha" 结果是true
"3" < 2 结果是false
"1ads"< 2 结果是false(使用的不是强制类型转换)
8、控制语句
8.1 if...else
var a = 10; if (a > 5){ console.log("yes"); }else { console.log("no"); }
8.2 switch
var day = new Date().getDay(); switch (day) { case 0: console.log("Sunday"); break; case 1: console.log("Monday"); break; default: console.log("...") }
8.3 for
for (var i=0;i<10;i++) { console.log(i); } for ( i in arr){......} //arr 为数组(不推荐使用)
8.4 while
var i = 0; while (i < 10) { console.log(i); i++; }
8.5 三元运算
var c = a > b ? a : b; // 条件a>b成立,返回a,不成立返回b var a=10,b=20; var x=a>b ?a:(b=="20")?a:b; // 结果: // x的值10

浙公网安备 33010602011771号