toString方法和string方法到区别
toString不能转换undefined和null 其他转换和String类似 但是用法不一样 toString方法是被各个类型所拥有的,可以让类型值直接调用,但是String方法是直接把要转换的值
传入String中
断路原理
// 这种类似的题目,一般不考虑整体返回值,而是看前一句条件是否满足,然后看后一句代码是否执行
var a = 2; var b = 3;
(a < b)&&(a = 5);
console.log(a);//5
var a = 6; var b = 3;
(a < b)&&(a = 5);
console.log(a);//6
var a = 2; var b = 3;
(a < b)||(a = 5);//2
console.log(a);
var a = 6; var b = 3;
(a < b)||(a = 5);
console.log(a);//5
字符串转数字
三种方法
- 一元运算
- Numeber方法
- 减0
- parseInt - parseFloat
括号的作用
小括号的作用:
- 提升优先级
- 函数调用
中括号的作用
1.定义数组
大括号的作用
- 定义对象
- 书写代码块
三元运算符
// a ?b :c
// 先判断a 如果a返回true 那么就执行b 否则就执行c
var num = true ? 3 : 2;
console.log(num);
var a = 2;
var b = 3;
// 如果a大于b 则弹出你好 否则 弹出滚蛋
// 方法1
if (a > b){
alert("你好");
} else{
alert("滚蛋");
}
// 方法2 三元运算
a > b ? alert("你好"):alert("滚蛋");
// 方法3 短路原理
a > b || alert("滚蛋");
a > b && alert("你好");
函数声明
如果说一个函数被多次声明,那么后边的声明会覆盖前边的声明
函数调用无论写在哪里,都能够被调用
函数是默认被提升的(当js开始执行之前,会先把当前作用域所有的函数全部提升到js的最前边读取)
函数的参数
// 函数的参数,函数在运行的时候需要一些外部的数据。那就是我们通过传递参数的形式实现
// 声明函数时传入的参数是 形参
// 调用函数时 传入的参数是 实参
// 函数的参数不是必须的,js允许我们不书写参数
function fn1(a){
console.log(a);
}
fn1();//函数需要参数但是没有传递 这个参数返回undefined
function fn1(a,b){
console.log(a,b);
}
fn1(,'1');//目前不允许只传递某一位的参数
function fn1(name,name) {
console.log(name,name);
}
fn1("小王","老王");//如果函数的参数命名重复,那么以后传入的为准
// arguments!!!!代表的是函数的实参 只能在函数内部使用 直接使用
//是一个伪数组
function f() {
console.log(arguments);
}
f(1,2,3,4,5,5,6);
函数作用域
// 作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期
// 作用域是按照函数来划分的
// 一旦在当前作用域声明了一个变量,那么本作用域就不能使用祖辈作用域的变量
//作用域分为 全局作用域和局部作用域 (变量就分为 全局变量和局部变量)
//最外层就是全局作用域,最外层定义的变量就是全局变量
var a = 10;//全局变量
function fn1() {
var b = 20;//局部变量
console.log(b);//20
console.log(a);//10
}
console.log(a);//10
console.log(b);//b is not defined*/
// 当使用一个变量的时候,先寻找自身有没有定义这个变量,如果有 则不再使用父级作用的变量
var a = 1;
function fn1() {
var a = 2;
console.log(a);//2
function fn2() {
var a = 3;
console.log(a);//3
function fn3() {
var a = 4;
console.log(a);//4
}
}
}
var a = 1;
function fn1() {
a = 2;//在这个局部作用域中 没有声明a 但是给a 赋值 就要去看a在哪里声明 然后把那个a的值改变了
//在这里把全局a的值改变为了 2
console.log(a);//全局 a 2
function fn2() {
a = 3;//把全局的a为3
console.log(a);//全局 a 3
function fn3() {
a = 4; //把全局的a 变成4
console.log(a);//全局a 4
}
fn3();
}
fn2();
}
局部作用域
局部变量在执行到当前作用域的时候才会声明
局部变量也是保存在内存当中的
但是当前函数执行完毕以后,局部变量就会被自动销毁,可以节省内存
并且其他作用域访问不到,不会对当前变量造成影
我们尽可能少的使用全局变量,因为占用内存并且特别危险(任何地方都可以修改)
网友评论