javascript 值得注意的一些问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_22689423/article/details/55683702

1声明定义:

//结果为NaN,因为x没有赋值。
var x, y = 1;
console.log(x + y);

2.作用域

if (true) {
var x = 5;
}
console.log(x); // 5

es6:

if (true) {
let y = 5;
}console.log(y); //ReferenceError: y is not defined1234

//全局变量上浮
console.log(x === undefined); // logs "true"
var x = 3;
//方法变量上浮
var myvar = "my value";
// 打印变量myvar结果为:undefined
(function() {
console.log(myvar); // undefined
var myvar = "local value";
})();

3.数据结构和类型

  • 6个基础类型: Boolean null undefine Number(NAN) String Symbol
  • 1个对象类型:object

4.数据转换 字符串转换为数字可使用parseInt和parseFloat方法

5.数据类型文本化

  • 文本化类型:Array、Boolean、Floating-point 、integers、Object、RegExp、String。

  • 对象属性:属性名可以是任意字符串或者空字符串,无效的名字可通过引号包含起来。复杂的名字不能通过.获取,但可以通过[]获取

console.log(unusualPropertyNames.!); // SyntaxError: Unexpected token !
console.log(unusualPropertyNames["!"]); // Bang!

6.块表达式

while (x < 10) {
x++;
} //{x++;}就是一个块声明
var x = 1;
{
var x = 2;
}
console.log(x); // outputs 2

7.简单boolean和对象Boolean类型有区别

var b = new Boolean(false);
if (b) // 返回true
if (b == true) // 返回false

8自定义异常

// 创建一个对象类型UserException
function UserException(message) {
this.message = message;
this.name = "UserException";
}

//重写toString方法,在抛出异常时能直接获取有用信息
UserException.prototype.toString = function() {
return this.name + ': "' + this.message + '"';
}

// 创建一个对象实体并抛出它
throw new UserException("Value too high");

9.finally返回值:如果finaly添加了return 语句,则不管整个try.catch返回什么,返回值都是finally的return

function f() {
    try {
        console.log(0);
        throw "bogus";
    } catch(e) {
        console.log(1);
        return true; // 返回语句被暂停,直到finally执行完成
        console.log(2); // 不会执行的代码
    } finally {
        console.log(3);
        return false; //覆盖try.catch的返回
        console.log(4); //不会执行的代码
    }
    // "return false" is executed now 
    console.log(5); // not reachable
}
f(); // 输出 0, 1, 3; 返回 false

猜你喜欢

转载自blog.csdn.net/sinat_22689423/article/details/55683702
今日推荐