共计 2949 个字符,预计需要花费 8 分钟才能阅读完成。
标识符:
所谓的标识符, 就是指变量、函数、属性的名字,或者函数的参数。标识符主要有以下规则:
首字符必须是字母、下划线_或者美元符 $
其他字符可以是字母、下划线_、美元符 $ 或者数字
标识符的命名遵循驼峰命名,即 myCar
用 var 操作符定义的变量将成为定义该变量的作用域中的局部变量. 也就是说, 如果在函数中使用 var 定义一个变量, 那么这个变量在函数退出后就会被销毁, 如:
function test() {
var message = “hi”;
}
test();
console.log(message); // 错误
a = 5 // 省略 var 操作符, 创建的是一个全局变量
javascript 数据类型:
基本数据类型: number, string, boolean, undefined, symbol, null
复杂数据类型: object (三种引用类型: function, arrary, object)
特殊值: NaN, undefined, null
NaN 有以下两个特点:
1. 任何涉及 NaN 的操作都会返回 NaN, 包括 NaN/0 // NaN.
2.NaN 与任何值都不相等, 包括 NaN 本身,NaN==NaN // false.
鉴于上面两点, 判断一个变量是否是 NaN 需要使用 javascript 提供的 isNaN()方法, 例: NaN.isNaN() // true
undefined 声明但是没有初始化的变量的值即为 undefined, 可以理解为此处应该有一个值, 但是实际上没有, 我们给它一个默认值 undefined
// 声明的变量
var a; // 相当于 var a=undefined;
console.log(typeof a); //undefiend
// 注意一下未声明的变量会直接报错的
console.log(b); //! 报错 b is not defined
null 是表示缺少的标识,指示变量未指向任何对象,如果定义的变量准备在将来用于保存对象时,那么最好将变量初始化为 null
typeof 操作符返回一个字符串,表示未经计算的操作数的类型
let s = Symbol
typeof 5 ———> number
typeof NaN ——-> number
typeof ‘a’ ——-> string
typeof true ——> boolean
typeof undefined -> undefined
typeof s ———> symbol
let fn = function() {}
typeof null ——> object
typeof [] ——–> object
typeof {} ——–> object
typeof fn ——–> function
instanceof 运算符用于测试构造函数的 prototype 属性是否出现在对象的原型链中的任何位置
基本类型使用字面量赋值, 使用 instanceof 并不能判断其变量类型, 因为字面量就是我们所见到的字符, 没有调用构造函数, 也就不能在原型上找到
let a = 5
a instanceof Number // false
let b = false
b instanceof Boolean // false
let c = Symbol
c instanceof Symbol // false
但是复杂类型使用字面量赋值时, 往往能判断其变量类型, 这是因为在 js 中根本不存在真正的空对象,即使是最简单的 {} 对象也会包含从 Object.prototype 继承而来的属性和方法
let obj = {}
obj instanceof Object // true
[] instanceof Array // true
// 注意
null instanceof Object // false
javascript 常用方法:
# 1.Number
number.isNaN() // 判断是否是 NaN
number.toFixed(2) // 保留小数点后两位
number.toString() // 将数字转换成字符串
Number 可以配合 Math 对象来使用
Math.random() // 随机取 0 - 1 的数
Math.abs(number) // 取绝对值
Math.round(number) // 四舍五入
Math.floor(number) // 向下取整
Math.ceil(number) // 向上取整
# 2.String
// 后续补全
# 3.Array
// 后续补全
javascript 语法:
==/!= 先转换再比较(强制转型) ===/!== 仅比较不转换
null == undefined; //true 它们是类似的值
null === undefined; //false 它们是不同类型的值
//var max = (num1>num2) ? num1 : num2 // 条件操作符又称三元运算符
// 当判断一个范围时请使用 if 语句
var scroe = 80
if(scroe >= 90) {
console.log(“ 成绩为优 ”);
}else if(scroe >= 80) {
console.log(“ 成绩为良 ”)
}else if(scroe >= 60) {
console.log(“ 成绩为及格 ”)
}else {
console.log(“ 成绩为不及格 ”);
}
// 在对比有限个值时, 值不能太多, 一般在 1 - 4 之间, 使用 switch 语句
switch(m) {
case x:
// 语句
break;
case y:
// 语句
break;
default:
// 语句
break;
}
// 循环次数已知, 选择 for 循环
for(初始化条件表达式; 条件表达式; 条件改变表达式) {
// 循环体
}
// 循环次数未知, 但是循环结束条件已知选择 while 语句
while(条件表达式) {
// 循环体
}
// 循环体至少执行一次时, 选择 do while 语句 例如: 要先考试才能知道是否及格
do{
// 循环体
}while(条件表达式)
var score = 48;
do {
console.log(‘ 没及格, 需要再来考试!’);
score += 15;
} while (score < 60);
for-in 语句是一种精准的迭代语句, 可以用来枚举对象的属性, 但是是无序的
var person = {
name: “ 张三 ”,
age: 20
}
for (var item in obj) {
console.log(item);
console.log(obj[item]);
}
//break 直接跳出循环
var num = 0;
for (var i = 1; i < 10; i++) {
if (i % 5 == 0) {
break;
}
num++;
}
console.log(num); //4 当 i = 4 时,num=4, 再执行循环 i =5, 跳出循环, 下面的 num++ 并没有执行, 此时 num 还是 4;
//continue 跳出本次循环, 继续执行下面的循环
var num = 0;
for (var i = 1; i < 10; i++) {
if (i % 5 == 0) {
continue;
}
num++;
}
console.log(num); // 当 i = 4 和 9 时, 跳过了 num++, 循环完成时 num=8;
// 函数执行完之后会立即销毁!!!
function sum(num1, num2) {
return num1 + num2; // 函数是否需要返回值是要看我们是否需要用到函数的返回值
}
function hello() {// 函数在执行完 return 之后会立即退出
return;
console.log(‘ 你好, 世界!’); // 这段语句不会执行
}