在这里插入代码片
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
翻译器翻译的方式有两种:一个是编译,另一个是解释两种方式之间的区别在于编译的时间点不同
编译器是在代码执行之前进行编译,生成中间代码文件
解释器是在运行是进行及时解释,并立即执行(当编译器以解释方式运行的时候,也称之为解释器)
标识(zhi)符:开发人员为变量、属性、函数、参数取得名字
标识符不能是关键字或保留字。
关键字:是指JS本身已经使用了的字,不能再用它们充当变量名、方法名。
包括:break、case、catch、continue、default、delete、do、else、finally、for、funtion、if、in、instanceof、new、return、switch、this、throw、try、typeof、var、void、white、with等。
保留字:保留字∶实际上就是预留的“关键字”,意思是现在虽然还不是关键字,但是未来可能会成为关键字,同样不能使用它们当变量名或方法名。
包括:包括: boolean、byte、char、class、const、debugger、double、enum、export、extends、fimal、float、goto、implements、import、int、interface、long、mative、package.volatile等。
余数为0就说明这个数能被整除,这就是 **%**取余运算的主要用途
++num 前置递增,就是自加1,类似于 num= num+1
使用口诀:先自加,后返回值
num++ 后置递增,就是自加1,类似于 num= num+1
1.前置自增很后值自增如果单独使用效果是一样的
2.后置自增口诀:先返回原值,后自加1
var num = 10;
num++ //num=num+1 等同于 ++num
console.log(num) //11
var age = 10;
console.log(age++ +10) /先返回原值10,再跟10相加得: 20
console.log(age) //11
**短路运算原理:**当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值;
1.逻辑与(逻辑中断)
语法:表达式1 && 表达式2
如果第一个表达式的值为真,则返回表达式2
如果第一个表达式的值为假,则返回表达式1
2.逻辑或(逻辑中断)很重要哦
语法:表达式1 && 表达式2
如果第一个表达式的值为真,则返回表达式1
如果第一个表达式的值为假,则返回表达式2
使用三元运算符
代码如下(示例):
var time propmt('请输入一个数字');
var result = time < 10 ? '0' + time : time;
alert(result)
代码如下(示例):
//九九乘法表
//一共有9行,但是每行的个数不一样,因此需要用到双重for循环
//外层的for循环控制行数9次,可以打印9行
//内层的for循环控制每行公式j
//核心算法:每一行公式的个数正好和行数一致,j<=i;
//每行打印完毕,都需要重新换一行
var str = '';
for(var i=1; i<=9; i++){
for(var j=1; j<=i; j++){
//1×1=1
//str= str+'⭐';
str+= j + '×' + i + '=' + i * j + '\t';
}
str += '\n';
}
console.log(str)
数组转换成字符串,代码如下(示例):
//将数组['red','green','blue','pink']转换成字符串,并用 | 或者其他符号分割
//1.需要一个新变量用来存放转换后的字符串 str
//2.遍历原来的数组,分别把里面的数据取出来,加到字符串里面
//3.同时在后面多加一个分隔符
var arr = ['red','green','blue','pink'];
var str = '';
var sep = '\';
for(var i=0; i<arr.length; i++){
str += arr[i] + sep
}
console.log(str)
筛选数组方法1,代码如下(示例):
//将数组[2,7,45,64,0,1,6]中大于等于10的元素筛选出来,放入新数组
//1.声明一个新的数组用来存放新数据 newArr
//2.遍历原来的旧数组,找出大于等于10的元素
//3.依次追加给新数组 newArr
var arr = [2,7,45,64,0,1,6];
var newArr= [];
var j = 0;
for(var i=0; i<arr.length; i++){
if(arr[i]>=10){
newArr[j] = arr[i];
j++;
}
}
console.log(newArr)
筛选数组方法2,代码如下(示例):
//将数组[2,7,45,64,0,1,6]中大于等于10的元素筛选出来,放入新数组
//1.声明一个新的数组用来存放新数据 newArr
//2.遍历原来的旧数组,找出大于等于10的元素
//3.依次追加给新数组 newArr
var arr = [2,7,45,64,0,1,6];
var newArr= [];
for(var i=0; i<arr.length; i++){
if(arr[i]>=10){
//新数组的索引号应该是从0开始,依次递增
newArr[newArr.length] = arr[i]
}
}
console.log(newArr)
翻转数组,代码如下(示例):
//将数组['red','green','blue','pink','purple']的内容反过来存放
//1.声明一个新数组用来存放新数据 newArr
//2.遍历原来的旧数组,找出大于等于10的元素
//3.依次追加给新数组 newArr
var arr = ['red','green','blue','pink','purple'];
var newArr= [];
for(var i=arr.length-1; i>=0; i--){
newArr[newArr.length] = arr[i]
}
}
console.log(newArr)
//冒泡排序
var arr = [4,3,5,1,2,8,6,7];
for(var i=0; i<=arr.length-1; i++){
//外部循环管躺数
for(var j=0; j<= arr.length-i-1){
//内部循环管每一趟的交换次数
//内部交换两个数的值,前一个和后一个元素进行相比较
if(arr[j] < arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
1.
let a = [1]
let b = a
console.log(a) // 1
console.log(b) // 1
b[0] = 2
console.log(a) // 2
console.log(b) // 2
这是把a赋值给b,但是现在a和b指向同一个内存
这样a是不是也变了
2.
let a = 'sss'
let b = a
console.log(a) // sss
console.log(b) // sss
b = 'xxx'
console.log(a) // sss
console.log(b) // xxx
而数组不会复制,就是把 [1] 在内存中的位置告诉了b
所以对于数组来说,a,b指向同一个值,但是字符串a,b各自有自己的值